mysql - 从 X 之间的时间戳不返回所有行的表中选择
问题描述
我有不同记录的数据库表,它们都有时间戳。
当我想获得某个月份(例如四月)的记录时,使用以下查询:
SELECT *
FROM `water`
WHERE timestamp >= DATE_FORMAT('2020-04-01', '%Y-%m-%d')
AND timestamp <= DATE_FORMAT('2020-04-30', '%Y-%m-%d')
AND watercar='JV03'
ORDER by timestamp DESC
它将返回时间戳在 01.04.2020-29.04.2020 之间的记录,但它错过了 2020 年 4 月 30 日记录的最后一天。
我也尝试过 >= <= 和运算符之间的问题,尽管记录确实存在。
我错过了什么?
解决方案
将您的查询更新为:
SELECT *
FROM `water`
WHERE timestamp between DATE_FORMAT('2020-04-01', '%Y-%m-%d 00:00:00') AND DATE_FORMAT('2020-04-30', '%Y-%m-%d 23:59:59') AND watercar='JV03'
ORDER by timestamp DESC
或者
SELECT *
FROM `water`
WHERE DATE(timestamp) between DATE_FORMAT('2020-04-01', '%Y-%m-%d') AND DATE_FORMAT('2020-04-30', '%Y-%m-%d') AND watercar='JV03'
ORDER by timestamp DESC