Sql 如何将时间戳截断为分钟?
我必须从当前时间戳中减去5分钟,并将其截断为最接近的分钟。比如“2016-02-23 06:10:39.0”应该是“2016-02-23 06:05:00.0”。 我找到了减去5分钟的方法Sql 如何将时间戳截断为分钟?,sql,oracle,timestamp,timestamp-arithmetic,Sql,Oracle,Timestamp,Timestamp Arithmetic,我必须从当前时间戳中减去5分钟,并将其截断为最接近的分钟。比如“2016-02-23 06:10:39.0”应该是“2016-02-23 06:05:00.0”。 我找到了减去5分钟的方法 systimestamp - interval '5' minute 编辑1: 我需要特定格式的时间戳 TO_TIMESTAMP((systimestamp - interval '15' minute),'YYYY-MM-DD HH24:MI:SS.ff') 但这是给予 ORA-01830: dat
systimestamp - interval '5' minute
编辑1:
我需要特定格式的时间戳
TO_TIMESTAMP((systimestamp - interval '15' minute),'YYYY-MM-DD HH24:MI:SS.ff')
但这是给予
ORA-01830: date format picture ends before converting entire input string
但我不能把它拖到最近的一分钟。
请帮忙。谢谢您可以使用trunc()
:
您可以使用TRUNC()。要仅持续几分钟,请使用
MI
比如说,
SQL> SELECT SYSTIMESTAMP, trunc(SYSTIMESTAMP - INTERVAL '5' MINUTE, 'MI') new_tmstmp
2 FROM dual;
SYSTIMESTAMP NEW_TMSTMP
----------------------------------- -------------------
16-MAR-16 04.44.02.379000 PM +05:30 03/16/2016 16:39:00
SQL>
请记住,上面的输出将是日期,而不是时间戳。您可以显式地将日期
转换为时间戳
:
SQL> SELECT SYSTIMESTAMP,CAST(trunc(SYSTIMESTAMP - INTERVAL '5' MINUTE,'MI') AS TIMESTAMP) tm
2 FROM dual;
SYSTIMESTAMP TM
----------------------------------- ------------------------------
16-MAR-16 04.53.25.802000 PM +05:30 2016-03-16 04:48:00.000000
SQL>
从dual中选择时间戳(trunc(SYSTIMESTAMP-间隔'5'分钟'MI'),'YYYY-MM-DD HH24:MI:SS.ff');每当我执行
DATE
和TIMESTAMP
数据类型没有任何格式时,此查询将给出16-MAR-16 12.00.00.000000000 AM。如果需要格式化的值,则需要使用to_CHAR()
并将其转换为字符串,或者可以使用NLS_TIMESTAMP_FORMAT
参数设置SQL客户端的默认格式。如果要截断日期/时间,则在时间戳上使用TRUNC()
@JaydeepTRUNC()
将返回日期。因此,如果希望输出为timestamp,则将日期显式转换为timestamp。谢谢。演员的工作很有魅力
SQL> SELECT SYSTIMESTAMP,CAST(trunc(SYSTIMESTAMP - INTERVAL '5' MINUTE,'MI') AS TIMESTAMP) tm
2 FROM dual;
SYSTIMESTAMP TM
----------------------------------- ------------------------------
16-MAR-16 04.53.25.802000 PM +05:30 2016-03-16 04:48:00.000000
SQL>