Php 日期之间的错误搜索
在数据库中,我的表用户有“生日”列 下面是我用来获取结果的sql查询Php 日期之间的错误搜索,php,mysql,date,Php,Mysql,Date,在数据库中,我的表用户有“生日”列 下面是我用来获取结果的sql查询 SELECT * FROM (`users`) WHERE `birthday` between '12/11/1982' and '31/01/1983' 问题是我只得到1982年的记录 请注意,1983年的记录是存在的 这里可能有什么问题?您应该将年份放在日期文字的第一位: SELECT * FROM `users` WHERE `birthday` between '1982-11-12' AND '1983-01-3
SELECT *
FROM (`users`)
WHERE `birthday` between '12/11/1982' and '31/01/1983'
问题是我只得到1982年的记录
请注意,1983年的记录是存在的
这里可能有什么问题?您应该将年份放在日期文字的第一位:
SELECT *
FROM `users`
WHERE `birthday` between '1982-11-12' AND '1983-01-31'
从:
日期和时间值可以用几种格式表示,例如带引号的字符串或数字,具体取决于值的确切类型和其他因素。例如,在MySQL需要日期的上下文中,它将“2015-07-21”、“20150721”和“20150721”中的任何一个解释为日期
如果您使用的是
varchar
类型,那么将日期放在第一位(在数据和查询中)仍然是有意义的,因为在使用默认排序顺序时,您的日期将正确排序。这只是Mark Byers的一个备选答案。如果您的列生日
的数据类型为varchar
,且格式为dd/MM/yyyy
,请务必阅读此内容;否则,请阅读
您需要做的第一件事是使用STR\u to\u DATE
将列转换为DATE
或DATETIME
数据类型
SELECT *
FROM `users`
WHERE STR_TO_DATE(`birthday`,'%d/%m/%Y')
between '1982-01-12' and '1983-12-31'
生日
,它是如何格式化的?请在执行之前尝试格式化数据。阅读关于或TO_SECONDS()。请运行SHOW CREATE TABLE users\G
并以YYYY-MM-DD
格式将其发布在问题SQL存储日期中,但他尝试在“DD/MM/YYYY”中搜索。甚至都不接近。所以,我想,第一步是将日期转换为unix时间戳或普通日期戳。