select replace (SELECT TO_CHAR(CURRENT_TIMESTAMP) FROM DUAL,CURRENT_TIMESTAMP,'2015-03-10 11:45:15') As result from dual;
我想用'2015-03-10 11:45:15'改变CURRENT_TIMESTAMP,但是oracle给出了 错误。但是如果你删除了select语句,那么它的工作正常我的意思是
select replace (TO_CHAR(CURRENT_TIMESTAMP),CURRENT_TIMESTAMP,'2015-03-10 11:45:15') As result from dual;
这个工作正常,但我有很长时间的查询和CURRENT_TIMESTAMP来了好几次,我想用给定的字符串替换它
它在mysql中正常工作我希望它在oracle中
答案 0 :(得分:0)
您需要在子查询周围放置括号:
select replace ((SELECT TO_CHAR(CURRENT_TIMESTAMP) FROM DUAL),CURRENT_TIMESTAMP,'2015-03-10 11:45:15') As result
from dual;
然而,这写得很糟糕。您的TO_CHAR(CURRENT_TIMESTAMP)
没有格式掩码,这意味着您将时间戳转换为字符串依赖于您的nls设置。这是不好的做法。
此外,替换语句的第二个参数中的CURRENT_TIMESTAMP
正在进行隐式转换为字符串,再次依赖于您的nls设置。
如果我是你,我会把它写成:
select replace ((SELECT TO_CHAR(CURRENT_TIMESTAMP, 'yyyy-mm-dd hh24:mi:ss') FROM DUAL),
TO_CHAR(CURRENT_TIMESTAMP, 'yyyy-mm-dd hh24:mi:ss'),
'2015-03-10 11:45:15') As result
from dual;