Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何将时间戳截断为分钟?_Sql_Oracle_Timestamp_Timestamp Arithmetic - Fatal编程技术网

Sql 如何将时间戳截断为分钟?

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

我必须从当前时间戳中减去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: 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()
@Jaydeep
TRUNC()
将返回
日期。因此,如果希望输出为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>