Oracle 在不考虑时间的情况下以天为单位的日期之间的差异

Oracle difference between to dates in days without considering time

如何在不考虑时间(小时、分钟、秒)的情况下从 CURRENT_TIMESTAMP 开始计算天数。 例如。 CURRENT_TIMESTAMP24-JUN-21 00.01.01 AM EVENT_TIMESTAMP23-JUN-21 07.00.00 PM 那么它应该 return 1 天差。

以下查询 return 给我 0 天以上的值,因为时差小于 24 小时。

SELECT EXTRACT(DAY FROM (CURRENT_TIMESTAMP - EVENT_TIMESTAMP)) FROM TABLE;

下面的查询 return 告诉我 1 天的差异,直到晚上 7 点,它开始显示 2 天的差异,在同一天的晚上 7 点之后。

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 将“删除”时间部分(实际上,将其设置为 midnight)并且您将只减去日期。 Oracle 中两个 DATE 数据类型值的差异表示它们之间的天数,所以...也许这就是您要查找的内容。