比较日期时相同的工作查询不起作用
Same working query doesn't work when comparing dates
我有这个:
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
有趣的是,如果我将 AND
上方的那个更改为 06/02/2020
,它会包含它...
这是怎么回事?
有没有可能你的日期是计算出来的日期?
删除截断函数:
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
你有两种可能
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')
你的组合对我没有解释
我有这个:
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
有趣的是,如果我将 AND
上方的那个更改为 06/02/2020
,它会包含它...
这是怎么回事?
有没有可能你的日期是计算出来的日期?
删除截断函数:
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
你有两种可能
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')
你的组合对我没有解释