获取确切的时间戳值?

时间:2014-02-21 04:56:11

标签: sql oracle timestamp

我试图从'current_timestamp'中减去几天,并使用Oracle中的to_timestamp()函数将其转换为时间戳。但我总是开始一天的时间,即上午12点。

执行时

select to_timestamp(current_timestamp - 3) from dual;

它会给我一些结果,

  

18-FEB-14 12.00.00.000000000 AM

但是我需要从当前时间开始3天的确切扣除。

感谢!!!!

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;