试着做各种各样的事情,但现在却空手而归。我让它像这样硬编码:
WHERE (activities.created_at BETWEEN '2015-08-07 00:00:00'
AND '2015-08-07 23:59:59.999')我只是想让它自动化一点,这样我就不用每天都去那里,把日期改到7天前的任何时候。
我最近的测试是:
WHERE (`activities`.`created_at` = CURDATE() - INTERVAL 7 DAY)它不是抛出错误,而是在需要显示338行时显示一个空集。
发布于 2015-08-14 18:01:20
这应该能行
where date(created_at) = CURDATE() - interval 7 day你的问题是等号两边的数据类型不一样。created_at是datetime列,而curdate()则返回日期。上述语句在比较之前将created_at转换为日期。
发布于 2015-08-14 18:01:13
我会这样做:
WHERE `activities`.`created_at` >= DATE(NOW()) - INTERVAL 7 DAY
AND `activities`.`created_at` < DATE(NOW()) - INTERVAL 6 DAY如果您愿意,可以使用CURDATE()来代替DATE(NOW())。
我更喜欢做第二天的“不到”午夜。
如果小于或等于时间分量为"23:59:59“的值,只要分辨率降到第二,这就是MySQL日期时间或时间戳。一些数据库支持更精确的日期时间值,在Server中可降至3ms,例如"23:59:59.982“。
“第二天不到午夜”模式适用于比1秒更精确的日期时间值。
https://stackoverflow.com/questions/32015950
复制相似问题