选择当前时间戳时 Oracle 中的标识符无效

Invalid identifier in Oracle when selecting current timestamp

以下查询在 DB2 中有效。但是,当我在 Oracle 中尝试此操作时,它 returns 出现错误:"invalid identifier"。这是我的声明:

SELECT TO_DATE(20150709||' '||TIME(CURRENT_TIMESTAMP), 'YYYYMMDD HH24MISS')  FROM DUAL

如何让它在 Oracle 中运行?

尝试

select to_date('08/07/2015 ' || to_char(sysdate,'hh24:mi:ss'),'dd/mm/yyyy hh24:mi:ss')
from dual

TIME 不是 oracle 中的有效内置函数。您需要使用 TO_CHAR 将时间部分作为字符串提取出来,或者使用其他机制添加时间部分。

SELECT TO_DATE( 20150709||' '||TO_CHAR(CURRENT_TIMESTAMP, 'HH24MISS')
              , 'YYYYMMDD HH24MISS')
  FROM DUAL;

这是使用日期算法的替代方法:

SELECT TO_DATE(20150709, 'YYYYMMDD')
     + (CURRENT_TIMESTAMP - TRUNC(CURRENT_TIMESTAMP))
FROM DUAL;

通过从未截断的时间戳中减去截断的 CURRENT_TIMESTAMP,您将获得 INTERVAL 可以从日期和时间戳中添加或减去的数据类型。