首页 > 解决方案 > 从 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 日记录的最后一天。

我也尝试过 >= <= 和运算符之间的问题,尽管记录确实存在。

我错过了什么?

DB小提琴:https ://www.db-fiddle.com/f/nWFFZmUt7FM17c98DXRRQw/0

标签: mysqlsql

解决方案


将您的查询更新为:

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


推荐阅读