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

时间:2016-03-16 11:04:31

标签: sql oracle timestamp timestamp-arithmetic

我必须从当前时间戳和楼层(截断)减去5分钟到最近的分钟。比如'2016-02-23 06:10:3​​9.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

但是我无法将它放到最近的分钟。 请帮忙。感谢

2 个答案:

答案 0 :(得分:5)

您可以使用 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>

请记住,上面的输出将是 DATE 而不是 TIMESTAMP 。您可以明确 CAST date作为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>

答案 1 :(得分:1)

您可以使用<add name="DefaultConnection" connectionString="metadata=res://*/App.csdl|res://*/App.ssdl|res://*/App.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string=&quot;DATA SOURCE=myHost:myPort/myDb;PASSWORD=myPassword;PERSIST SECURITY INFO=True;USER ID=myUser;Connection Timeout=900&quot;" providerName="System.Data.EntityClient" />

trunc()