选择当前时间戳时 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
可以从日期和时间戳中添加或减去的数据类型。
以下查询在 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
可以从日期和时间戳中添加或减去的数据类型。