我有一个这样的查询:
SELECT * FROM Cases WHERE created_at BETWEEN '2013-05-01' AND '2013-05-01'
但即使 1 日有数据,也没有给出任何结果。
created_at
好像2013-05-01 22:25:19
,我怀疑这和时间有关?怎么解决这个问题呢?
如果我执行更大的日期范围,它就可以正常工作,但它也应该(包括)适用于单个日期。
It is包括的。您正在将日期时间与日期进行比较。第二个日期被解释为午夜当这一天开始的时候.
解决此问题的一种方法是:
SELECT *
FROM Cases
WHERE cast(created_at as date) BETWEEN '2013-05-01' AND '2013-05-01'
解决此问题的另一种方法是使用显式二进制比较
SELECT *
FROM Cases
WHERE created_at >= '2013-05-01' AND created_at < '2013-05-02'
Aaron Bertrand 有一篇关于日期的长博客文章(here https://sqlblog.org/2009/10/16/bad-habits-to-kick-mis-handling-date-range-queries),他在其中讨论了这个问题和其他日期问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)