从T-SQL中的存储过程,我想从系统中获取时间。因此,例如,如果系统的时间是12:29,则函数应该返回12:00,如果系统的时间是12:31,则函数应该返回13:00。
我该怎么做?
答案 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 强>
工作原理:
修改强>
在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 强>