This page提到如何将时间戳截断为分钟/小时/等。在Oracle中。
如何以相同的方式将时间戳截断为秒?
答案 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