我正在使用以下查询来定位比当前时间早 X 天的结果。
SELECT *,
DATE_FORMAT(datetime, '%m/%d/%Y')
FROM table
WHERE datetime BETWEEN SYSDATE() - INTERVAL 30 DAY
AND SYSDATE()
ORDER BY ID DESC
如果不存在恰好 30 天前的记录,则问题是它从当天返回的数据,以及不相关的数据
有更好的方法吗?
最佳答案
BETWEEN
包括两个参数之间的所有值,包括两端的值。换句话说,BETWEEN 1 AND 4
包括值 1、2、3 和 4。不仅仅是 1 和 4,也不仅仅是 2 和 3。
如果您只想要 30 天前的那一天的日期,请尝试以下操作:
SELECT *,
DATE_FORMAT(datetime, '%m/%d/%Y')
FROM table
WHERE DATE(datetime) = CURDATE() - INTERVAL 30 DAY
ORDER BY ID DESC
使用 CURDATE()
而不是 SYSDATE()
因为 CURDATE()
返回没有时间部分的日期。
关于sql - 使用 datetime 和 php 从 1、7 和 30 天前选择 mysql db 中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3283358/