问题描述
如何在不考虑时间(小时、分钟、秒)的情况下从 CURRENT_TIMESTAMP 获取天数。
例如。 CURRENT_TIMESTAMP
是 24-JUN-21 00.01.01 AM
而 EVENT_TIMESTAMP
是 23-JUN-21 07.00.00 PM
那么它应该返回 1
天差。
以下查询为上述值返回 0
天,因为时差小于 24 小时。
SELECT EXTRACT(DAY FROM (CURRENT_TIMESTAMP - EVENT_TIMESTAMP)) FROM TABLE;
下面的查询返回我到晚上 7 点的 1
天差异,它在同一日期的晚上 7 点之后开始显示 2
天差异。
SELECT CEIL(SYSDATE - CAST(EVENT_TIMESTAMP AS DATE)) FROM TABLE;
谢谢。
解决方法
如果我理解正确,您应该只截断这些值:
SQL> select trunc(to_date('24.06.2021 00:01:01','dd.mm.yyyy hh24:mi:ss'))
2 - trunc(to_date('23.06.2021 07:00:00','dd.mm.yyyy hh24:mi:ss')) result
3 from dual;
RESULT
----------
1
SQL>
TRUNC 将“删除”时间组件(实际上,将其设置为 午夜)并且您只会减去日期。 Oracle 中两个 DATE 数据类型值的差异表示它们之间的天数,所以......也许这就是您要寻找的。p>