我有以下查询尝试在一对日期之间从MYTABLE返回所有记录。
存储在数据库中的示例日期为:2013-04-10 15:42:10.096789
以下查询执行约30分钟但似乎没有返回,MYTABLE的大小为200'000行。
我的查询是否正确?
SELECT * FROM MYTABLE
WHERE TIMESTAMP >= TO_DATE('2013-04-01 00:00:00' , 'YYYY-MM-DD HH24:MI:SS')
AND TIMESTAMP <= TO_DATE('2013-04-30 00:00:00' , 'YYYY-MM-DD HH24:MI:SS')
ORDER BY REP_TIMESTAMP DESC
存储日期(小数点后6位)的详细程度是否可以成为此查询的问题?
答案 0 :(得分:1)
2013-05-10 15:42:10.096789超出了您所查询的日期范围。您的查询仅返回2014年4月的结果,但2013-05-10 15:42:10.096789将于2013年5月返回。
顺便说一句,如果您使用的是Oracle,则可以使用between子句。这使它更容易阅读。我不确定其他数据库软件是否支持该语法。
SELECT * FROM MYTABLE
WHERE TIMESTAMP BETWEEN TIMESTAMP '2013-04-01 00:00:00'
AND TIMESTAMP '2013-04-30 00:00:00'
ORDER BY REP_TIMESTAMP DESC
此外,我的帖子已经过编辑,以反映出由于您使用的是ISO标准格式,因此您可以使用时间戳文字而不是使用TO_DATE函数。
答案 1 :(得分:0)
您搜索的日期不在您正在搜索的范围内。请点按>=
和<=
或选择其他日期。