在PLSQL中将VARCHAR2转换为DATE



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;小提琴这里

相关内容

  • 没有找到相关文章

最新更新