從T-SQL中的存儲過程中,我想從系統中獲取時間。因此,例如,如果系統時間爲12:29,則函數應返回12:00,如果系統時間爲12:31,則函數應該返回13:00。如何從系統獲取時間? t-sql
我該怎麼做?
從T-SQL中的存儲過程中,我想從系統中獲取時間。因此,例如,如果系統時間爲12:29,則函數應返回12:00,如果系統時間爲12:31,則函數應該返回13:00。如何從系統獲取時間? t-sql
我該怎麼做?
您可以使用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);
它是如何工作的:
編輯:
之前的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);
[T-SQL的日期時間可能重複四捨五入分鐘和最近幾小時使用功能](https://stackoverflow.com/questions/6666866/t-sql-datetime-rounded-to-nearest-minute-and-nearest-hours-with-using-functions) –