我希望仅从3天前获取记录,而不是从现在开始的记录,并且可以追溯到3天前...我只想要记录那个24小时的时间以及当我使用>它从现在开始选择所有东西
这是我的查询
SELECT user_id, nickname, user_email, date_of_register, verification_code, user_photo_url FROM `tbl_users` WHERE verified='N' AND date_of_register > DATE_SUB(CURDATE(), INTERVAL 3 DAY) ORDER BY date_of_register ASC
列date_of_register是date time
,这是格式
2016-08-26 08:57:52
谢谢你的帮助
答案 0 :(得分:0)
尝试:
$date = "2016-08-26";
SELECT * FROM `tbl_users` WHERE `verified`='N' AND `date_of_register` = '{$date}' ORDER BY `date_of_register` ASC
设置$ date变量始终是更好的方法,因为它可以更快地搜索,而不是通过多行代码路由来查找您的查询。
为什么不选择SELECT *(全部)?而不是选择少数几个?
答案 1 :(得分:0)
您必须匹配日期并忽略时间才能获得结果
使用DATE(date_of_register)
从3天开始记录
SELECT user_id, nickname, user_email, date_of_register, verification_code, user_photo_url FROM `tbl_users` WHERE verified='N' AND DATE(date_of_register) > DATE_SUB(CURDATE(), INTERVAL 3 DAY) ORDER BY date_of_register ASC
答案 2 :(得分:0)
比较日期而不是日期和时间,仅将Hibernate
作为date_of_register
。{/ p>
DATE
答案 3 :(得分:0)
将此作为当前接受的解决方案添加将阻止索引处理date_of_register字段。
set @date=DATE_SUB(CURDATE(), INTERVAL 3 DAY)
SELECT user_id, nickname, user_email, date_of_register, verification_code, user_photo_url
FROM `tbl_users`
WHERE verified='N'
AND date_of_register > @date
AND date_of_register < DATE_ADD(@date,INTERVAL 1 DAY)
ORDER BY date_of_register ASC