PLSQL中有一列"a"的数据类型为VARCHAR2
。它可以包含120、60、78等值。这些值基本上表示分钟。
现在有另一列"B"的数据类型为DATE
。我需要在SELECT
语句的WHERE
子句中进行以下比较-
WHERE SYSDATE - B > A
如何管理此处的数据类型以便进行此比较?
看起来像
where sysdate - B > A / (24 * 60)
因为两个DATE
数据类型值(即SYSDATE - B
(的差异是它们之间的天数,所以您必须"转换";A
(即分钟(划分为天数,因此将其除以(24 * 60)
,因为一天有24
小时,每小时有60
分钟。
您可以使用numtodsinterval
:代码中可读的显式间隔规范
with a as ( select sysdate as dt , to_char(level*10, 'tm9') as dt_offset from dual connect by level < 10 ) select a.* , sysdate + numtodsinterval(to_number(dt_offset, '999999999'), 'MINUTE') as date_new from a
DT|DT_OFFSET|DATE_NEW:---------------|:--------|:------------------2021-07-14 13:17:50 | 10 | 2021-07-13 13:27:502021-07-14 13:17:50 | 20 | 2021-07-13 13:37:502021-07-14 13:17:50 | 30 | 2021-07-13 13:47:502021-07-14 13:17:50|40|2021-07-13 13:57:502021-07-14 13:17:50|50|2021-07-114 14:07:502021-07-14 13:17:50|60|2021-07-114 14:17:502021-07-14 13:17:50|70|2021-07-114 14:27:502021-07-14 13:17:50|80|2021-07-114 14:37:502021-07-14 13:17:50|90|2021-07-114 14:47:50
db<gt;小提琴这里