如何在Oracle中将日期截断为秒

时间:2008-10-01 15:23:36

标签: oracle

This page提到如何将时间戳截断为分钟/小时/等。在Oracle中。

如何以相同的方式将时间戳截断为秒?

7 个答案:

答案 0 :(得分:28)

由于DATE的精度是第二个(并且没有秒数),因此根本不需要TRUNC

数据类型TIMESTAMP允许几分之一秒。如果将其转换为DATE,则将删除小数秒 - 例如

select cast(systimestamp as date) 
  from dual;

答案 1 :(得分:3)

我很抱歉,但我的所有前任似乎都错了:

从双向选择强制转换(systimestamp as date)不会截断,而是舍入到下一秒。

我使用了一个函数:

CREATE OR REPLACE FUNCTION TRUNC_TS(TS IN TIMESTAMP) RETURN DATE AS
BEGIN
  RETURN TS;
END;

SELECT systimestamp, trunc_ts(systimestamp) date_trunc, 
    CAST(systimestamp AS DATE) date_cast FROM dual

SYSTIMESTAMP                       DATE_TRUNC             DATE_CAST
21.01.10 15:03:34,567350 +01:00    21.01.2010 15:03:34    21.01.2010 15:03:35

答案 2 :(得分:2)

关于截断Oracle日期的一般主题,这里是可以在日期trunc()和round()函数中使用的格式模型的文档链接

http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/functions242.htm#sthref2718

未列出“秒”,因为DATE数据类型的粒度为秒。

答案 3 :(得分:2)

我使用了这样的功能:

FUNCTION trunc_sec(p_ts IN timestamp)
IS
    p_res timestamp;
BEGIN
    RETURN TO_TIMESTAMP(TO_CHAR(p_ts, 'YYYYMMDDHH24MI'), 'YYYYMMDDHH24MI');
END trunc_sec;

答案 4 :(得分:1)

要将timestamp截断为秒,您可以将其转换为日期:

CAST(timestamp AS DATE)

然后在文章中执行TRUNC

TRUNC(CAST(timestamp AS DATE), 'YEAR')

答案 5 :(得分:0)

大概的顺序:

select to_char(current_timestamp, 'SS') from dual;

答案 6 :(得分:0)

将工作截断为仅分钟,转换为日期to_char(START_TIME,'YYYYMMDDHH24MISS')

或只是select to_char(current_timestamp, 'YYYYMMDDHH24MISS') from dual;

https://www.techonthenet.com/oracle/functions/trunc_date.php