我试图从'current_timestamp'中减去几天,并使用Oracle中的to_timestamp()函数将其转换为时间戳。但我总是开始一天的时间,即上午12点。
执行时
select to_timestamp(current_timestamp - 3) from dual;
它会给我一些结果,
18-FEB-14 12.00.00.000000000 AM
但是我需要从当前时间开始3天的确切扣除。
感谢!!!!
答案 0 :(得分:3)
select current_timestamp - 3 ts from dual;
或
SELECT SYSTIMESTAMP - INTERVAL '3' DAY AS day FROM dual;
答案 1 :(得分:2)
也会给你时间:
select sysdate - 3 from dual;
根据您的评论进行修改:
select to_timestamp(to_char(sysdate-3,'DD-Mon-RR HH24:MI:SS'),'DD-Mon-RR HH24:MI:SS') from dual;
或更简单:
select systimestamp - 3 from dual
答案 2 :(得分:2)
一个重要的区别是SYSDATE为您提供服务器时间,CURRENT_TIMESTAMP为您提供会话时间。
此外,根据文档,TO_TIMESTAMP对CHAR,VARCHAR2,NCHAR或NVARCHAR2数据类型进行操作,而不是DATE。所以我认为你需要寻找其他地方:
SELECT CAST (SYSDATE AS TIMESTAMP) from dual;