如何从系统中获取时间? T-SQL

时间:2017-07-11 10:19:27

标签: sql-server tsql

从T-SQL中的存储过程,我想从系统中获取时间。因此,例如,如果系统的时间是12:29,则函数应该返回12:00,如果系统的时间是12:31,则函数应该返回13:00。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用DATEADD功能:

DECLARE @time TIME = '12:31:00'

SELECT CAST(DATEADD(Hour,IIF(DATEPART(mi, @time)<=30,0,1),DATEADD(Hour, DATEDIFF(Hour, 0, @time), 0)) AS TIME);

<强> Rextester Demo

工作原理:

  1. 截断时间到最近的小时
  2. 如果分钟加1小时&gt; 30(如果您还需要处理秒数,则更改逻辑)
  3. 修改

    在SQL Server 2012之前,您可以使用CASE代替IIF

    DECLARE @time TIME = '12:31:00'
    
    SELECT CAST(DATEADD(Hour,CASE WHEN DATEPART(mi, @time)<=30 THEN 0 ELSE 1 END,DATEADD(Hour, DATEDIFF(Hour, 0, @time), 0)) AS TIME);
    

    <强> Rextester Demo 2