相同的工作查询在比较日期时不起作用

gwbalxhn  于 2021-07-29  发布在  Java
关注(0)|答案(3)|浏览(376)

我有这个:

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 有趣的是,如果我把上面的那个换了 AND06/02/2020 ,包括。。。这是怎么回事?

igetnqfo

igetnqfo1#

删除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
tzxcd3kk

tzxcd3kk2#

你的约会可能是经过计算的吗?

brvekthn

brvekthn3#

你有两种可能
a) 与时间分量比较-然后使用此表达式

my_date  < (to_date('06/03/2020','MM/DD/YYYY') + INTERVAL '15:00:00' HOUR TO SECOND)

b) 不带时间成分的比较(即截断)-然后使用此表达式

trunc(my_date) <  trunc(to_date('06/03/2020','MM/DD/YYYY')

你的组合对我没有解释力

相关问题