Sql 比较日期时,相同的工作查询不起作用
我有这个:Sql 比较日期时,相同的工作查询不起作用,sql,oracle,oracle-sqldeveloper,Sql,Oracle,Oracle Sqldeveloper,我有这个: where (trunc(my_date) >= (trunc(to_date('06/03/2020','MM/DD/YYYY')) + INTERVAL '13:00:00' HOUR TO SECOND)) AND (trunc(my_date) < (trunc(to_date('06/03/2020','MM/DD/YYYY')) + INTERVAL '15:00:00' HOUR TO SECOND)) 奇怪的是,底部的部分按照预期工作
where
(trunc(my_date) >= (trunc(to_date('06/03/2020','MM/DD/YYYY')) + INTERVAL '13:00:00' HOUR TO SECOND))
AND
(trunc(my_date) < (trunc(to_date('06/03/2020','MM/DD/YYYY')) + INTERVAL '15:00:00' HOUR TO SECOND))
奇怪的是,底部的部分按照预期工作,而顶部的部分却没有
我试图得到这个值:2020-06-03 13:42:31.862930
有趣的是,如果我将和上方的一个更改为2020年2月6日,它将包括。。。
这是怎么回事?您的日期可能是计算日期吗?您的日期可能是计算日期吗?删除trunc功能:
SQL> select * from t;
MY_DATE
---------------------------------------------------------------------------
2020-06-03 13:42:31.862930
SQL> select trunc(my_date) from t;
TRUNC(MY_DATE)
-------------------
2020-06-03 00:00:00
SQL> --
SQL> select * from t
2 where
3 ((my_date) >= (trunc(to_date('06/03/2020','MM/DD/YYYY')) + INTERVAL '13:00:00' HOUR TO SECOND))
4 AND
5 ((my_date) < (trunc(to_date('06/03/2020','MM/DD/YYYY')) + INTERVAL '15:00:00' HOUR TO SECOND))
6 ;
MY_DATE
---------------------------------------------------------------------------
2020-06-03 13:42:31.862930
删除trunc功能:
SQL> select * from t;
MY_DATE
---------------------------------------------------------------------------
2020-06-03 13:42:31.862930
SQL> select trunc(my_date) from t;
TRUNC(MY_DATE)
-------------------
2020-06-03 00:00:00
SQL> --
SQL> select * from t
2 where
3 ((my_date) >= (trunc(to_date('06/03/2020','MM/DD/YYYY')) + INTERVAL '13:00:00' HOUR TO SECOND))
4 AND
5 ((my_date) < (trunc(to_date('06/03/2020','MM/DD/YYYY')) + INTERVAL '15:00:00' HOUR TO SECOND))
6 ;
MY_DATE
---------------------------------------------------------------------------
2020-06-03 13:42:31.862930
你有两种可能 与时间分量的比较-然后使用此表达式
my_date < (to_date('06/03/2020','MM/DD/YYYY') + INTERVAL '15:00:00' HOUR TO SECOND)
trunc(my_date) < trunc(to_date('06/03/2020','MM/DD/YYYY')
B不带时间分量的比较,即截断-然后使用此表达式
my_date < (to_date('06/03/2020','MM/DD/YYYY') + INTERVAL '15:00:00' HOUR TO SECOND)
trunc(my_date) < trunc(to_date('06/03/2020','MM/DD/YYYY')
您的组合无法为我提供解释您有两种可能性 与时间分量的比较-然后使用此表达式
my_date < (to_date('06/03/2020','MM/DD/YYYY') + INTERVAL '15:00:00' HOUR TO SECOND)
trunc(my_date) < trunc(to_date('06/03/2020','MM/DD/YYYY')
B不带时间分量的比较,即截断-然后使用此表达式
my_date < (to_date('06/03/2020','MM/DD/YYYY') + INTERVAL '15:00:00' HOUR TO SECOND)
trunc(my_date) < trunc(to_date('06/03/2020','MM/DD/YYYY')
您的组合无法为我解释我的日期数据类型是什么?@pifor给我一点时间,让我解释一下check@piforTimestamp6我的日期数据类型是什么?@pifor给我一点时间,让我check@pifor什么意思?什么意思?不截断日期安全吗?这完全取决于你想做什么。但是对于这个查询,您不需要截断日期。如果你有时间戳6,它也代表小时、分钟、秒和更多——不仅仅是年、日和月。不截断日期安全吗?这取决于你想做什么。但是对于这个查询,您不需要截断日期。如果你有时间戳6,它也代表小时、分钟、秒和更多,而不仅仅是年、日和月。