SQL从特定日期获取记录

时间:2016-08-26 13:08:50

标签: sql

我希望仅从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

谢谢你的帮助

4 个答案:

答案 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