如何解决Oracle 在不考虑时间的情况下以天为单位的日期之间的差异
如何在不考虑时间(小时、分钟、秒)的情况下从 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>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。