在 MySQL 中处理日期和时间数据时,通常需要选择特定日期范围内的数据。但是,当使用created_at列作为日期时间值时,短日期的默认解释是午夜。
问题:
您可能会遇到这样的查询的情况:尽管行的created_at时间戳落在指定日期内,以下内容不会返回行range:
SELECT `users`.* FROM `users` WHERE created_at >= '2011-12-01' AND created_at <= '2011-12-06'
解决方案:
问题是查询实际上选择的数据范围是 '2011-12-01 00:00:00 ' 到 '2011-12-06 00:00:00'。要解决此问题,有多种方法:
SELECT `users`.* FROM `users` WHERE created_at >= '2011-12-01' AND created_at <= '2011-12-07'
SELECT `users`.* FROM `users` WHERE created_at >= '2011-12-01' AND created_at <= DATE_ADD('2011-12-01', INTERVAL 7 DAY)
SELECT `users`.* FROM `users` WHERE created_at BETWEEN('2011-12-01', DATE_ADD('2011-12-01', INTERVAL 7 DAY))
使用这些方法中的任何一种都将正确选择属于指定范围内的数据日期范围,包括具有created_at时间戳的行,例如“2011-12-06” 10:45:36'。
以上是如何在MySQL中正确选择两个日期之间的数据?的详细内容。更多信息请关注PHP中文网其他相关文章!