SQL查询使用oracle 10g数据库日期时间等于不起作用
问题描述:
我有这样的SQL查询。SQL查询使用oracle 10g数据库日期时间等于不起作用
select *
from TABLE_A
where LogDateTime >= startdatetime and LogDateTime <= enddatetime;
但是,enddatetime等于某些原因不起作用。我有记录日期11/23/09 8:50:09。当我选择enddatetime作为11/23/09 8:50:09它不会返回此记录。它回到8点49分。可能是什么问题呢?为什么时间戳不起作用?请告诉我。
谢谢。
答
什么数据类型enddatetime是什么?如果它是一个时间戳,那么您传递的变量的类型(DateTime)与表中数据的类型(Timestamp)之间可能会有不匹配,这可能会导致此错误,因为可能没有完全匹配的时间戳日期时间值...和最接近的可用值可能会在导致记录被过滤掉的方向上“关闭”。
答
是TIMESTAMP数据类型的LogDateTime吗?它存储秒的小数部分。可能你的日期不是 11/23/09 8:50:09。
尝试使用TO_CHAR(LogDateTime,'MM/DD/YYYY HH24:MI:SS.FF')
输出日期以查看是否属于这种情况。
是的,它是TIMESTAMP(6)。 – nav100 2009-11-23 15:22:21
然后你需要一些舍入,就像在Andomar的建议中一样。 – 2009-11-23 15:55:22
经过思考,我得出结论,你可能根本不需要四舍五入。你的查询是正确的,你知道日期不相等,所以实际上它不是一个问题。 – 2009-11-23 18:19:34