Oracle 在不考虑时间的情况下以天为单位的日期之间的差异
Oracle difference between to dates in days without considering time
如何在不考虑时间(小时、分钟、秒)的情况下从 CURRENT_TIMESTAMP 开始计算天数。
例如。 CURRENT_TIMESTAMP
是 24-JUN-21 00.01.01 AM
EVENT_TIMESTAMP
是 23-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 数据类型值的差异表示它们之间的天数,所以...也许这就是您要查找的内容。
如何在不考虑时间(小时、分钟、秒)的情况下从 CURRENT_TIMESTAMP 开始计算天数。
例如。 CURRENT_TIMESTAMP
是 24-JUN-21 00.01.01 AM
EVENT_TIMESTAMP
是 23-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 数据类型值的差异表示它们之间的天数,所以...也许这就是您要查找的内容。