【发布时间】:2015-04-25 10:47:21
【问题描述】:
我有以下验证:
DATE1 + INTERVAL to_char(DATE2, 'HH24:MI:SS') HOUR TO SECOND > DATE3;
但它让我一直在说运营商无效。我做错了什么?
【问题讨论】:
我有以下验证:
DATE1 + INTERVAL to_char(DATE2, 'HH24:MI:SS') HOUR TO SECOND > DATE3;
但它让我一直在说运营商无效。我做错了什么?
【问题讨论】:
您似乎正在尝试从DATE2 获取时间部分并将其添加到DATE1?恐怕 Oracle 不会将 TO_CHAR(date2...) 识别为 INTERVAL 文字,即使它看起来格式正确。我会试试这个(好的老式 Oracle 日期算法):
date1 + ( date2 - TRUNC(date2) ) > date3;
您还可以执行以下操作:
date1 + TO_DSINTERVAL('0 ' || TO_CHAR(date2, 'HH24:MI:SS')) > date3;
其中date2 转换为DAY TO SECOND INTERVAL(我使用0 表示天数,因为您只需要时间部分)。
【讨论】: