declare @time1 datetime=getdate() --程式碼 declare @time2 datetime=getdate() SELECT DATEDIFF(year, @TIME1,@TIME2); SELECT DATEDIFF(quarter, @TIME1,@TIME2); SELECT DATEDIFF(month, @TIME1,@TIME2); SELECT DATEDIFF(dayofyear, @TIME1,@TIME2); SELECT DATEDIFF(day, @TIME1,@TIME2); SELECT DATEDIFF(week, @TIME1,@TIME2); SELECT DATEDIFF(hour, @TIME1,@TIME2); SELECT DATEDIFF(minute, @TIME1,@TIME2); SELECT DATEDIFF(second, @TIME1,@TIME2); SELECT DATEDIFF(millisecond, @TIME1,@TIME2); SELECT DATEDIFF(microsecond, @TIME1,@TIME2); --結束減開始時間 --datetime型別 --declare @d3 datetime='2023-10-13 14:31:38.100' --declare @d4 datetime='2023-10-13 14:32:32.673' --select GETDATE() --datetime2型別 DECLARE @d3 datetime2 = '2023-10-13 14:46:03.4597353'; DECLARE @d4 datetime2 = '2023-10-13 14:46:53.1234567'; --SELECT SYSDATETIME() AS CurrentDateTime2; DECLARE @diffInSeconds INT = DATEDIFF(SECOND, @d3, @d4) DECLARE @diffInMilliseconds INT = DATEDIFF(MILLISECOND, @d3, @d4) DECLARE @diffInMicroseconds INT = DATEDIFF(MICROSECOND, @d3, @d4) SELECT CONCAT( CASE WHEN @diffInSeconds >= 31536000 THEN CONCAT(@diffInSeconds / 31536000, '年 ') ELSE '' END, CASE WHEN (@diffInSeconds / 2592000) % 12 > 0 THEN CONCAT((@diffInSeconds / 2592000) % 12, '月 ') ELSE '' END, CASE WHEN (@diffInSeconds / 86400) % 30 > 0 THEN CONCAT((@diffInSeconds / 86400) % 30, '日 ') ELSE '' END, CASE WHEN (@diffInSeconds / 3600) % 24 > 0 THEN CONCAT((@diffInSeconds / 3600) % 24, '小時 ') ELSE '' END, CASE WHEN (@diffInSeconds / 60) % 60 > 0 THEN CONCAT((@diffInSeconds / 60) % 60, '分 ') ELSE '' END, CASE WHEN @diffInSeconds % 60 > 0 THEN CONCAT(@diffInSeconds % 60, '秒 ') ELSE '' END, CASE WHEN @diffInMilliseconds % 1000 > 0 THEN CONCAT(@diffInMilliseconds % 1000, '毫秒 ') ELSE '' END, CASE WHEN @diffInMicroseconds % 1000 > 0 THEN CONCAT(@diffInMicroseconds % 1000, '微秒') ELSE '' END ) AS [TimeDifference];
返回值型別 datetime2(7) SYSDATETIME() 返回包含計算機的日期和時間的 datetime2(7) 值,SQL Server 的例項正在該計算機上執行 SYSDATETIMEOFFSET() 返回包含計算機的日期和時間的 datetimeoffset(7) 值,SQL Server 的例項正在該計算機上執行。時區偏移量包含在內。 SYSUTCDATETIME() 返回包含計算機的日期和時間的 datetime2 值,SQL Server 的例項正在該計算機上執行。 日期和時間作為 UTC 時間(通用協調時間)返回。 返回值型別 datetime CURRENT_TIMESTAMP 返回包含計算機的日期和時間的 datetime 值,SQL Server 的例項在該計算機上執行。 返回值不包括時區偏移量。 GETDATE() 返回包含計算機的日期和時間的 datetime 值,SQL Server 的例項在該計算機上執行。 返回值不包括時區偏移量。 GETUTCDATE(); 返回包含計算機的日期和時間的 datetime 值,SQL Server 的例項在該計算機上執行。 該函式返回日期和時間作為 UTC 時間(協調世界時)。
SELECT SYSDATETIME() , SYSDATETIMEOFFSET() , SYSUTCDATETIME() , CURRENT_TIMESTAMP , GETDATE() , GETUTCDATE(); SELECT CONVERT (date, SYSDATETIME()) ,CONVERT (date, SYSDATETIMEOFFSET()) ,CONVERT (date, SYSUTCDATETIME()), CONVERT (date, CURRENT_TIMESTAMP),CONVERT (date, GETDATE()),CONVERT (date, GETUTCDATE()); SELECT CONVERT (time,SYSDATETIME()),CONVERT (time,SYSDATETIMEOFFSET()),CONVERT (time,SYSUTCDATETIME()), CONVERT (time,CURRENT_TIMESTAMP),CONVERT (time,GETDATE()),CONVERT (time,GETUTCDATE()); ------------------------------------------------------------------------- declare @day varchar(100) set @day='2021-01-31 ' select DATEPART(dw,GETDATE()),CONVERT(nvarchar(50),GETDATE(),120) select datename(dw,GETDATE()),CONVERT(nvarchar(50),GETDATE(),120) select datename(dw, @day),CONVERT(nvarchar(50), @day,120) select datename(dw,GETDATE()) select (convert(varchar(20),getdate()-1, 120)) --2021-01-28 15:58:26 select dateName(DD,getdate()-1) --28 --上個月1號 select CONVERT(varchar(7), dateadd(mm,-1,getdate()) , 120) + '-1' --本月1號 select CONVERT(varchar(7), getdate() , 120) + '-1' --下個月1號 select CONVERT(varchar(7), dateadd(mm,1,getdate()) , 120) + '-1' --本月天數 select day(dateadd(mm,1,getdate())-day(getdate())) ------------------------------------------------------------------------- CONVERT(data_type,expression[,style]) convert(varchar(10),欄位名,轉換格式) 說明: 此樣式一般在時間型別(datetime,smalldatetime)與字串型別(nchar,nvarchar,char,varchar) 相互轉換的時候才用到. 語句 結果 SELECT CONVERT(varchar(100), GETDATE(), 0) 07 15 2009 4:06PM SELECT CONVERT(varchar(100), GETDATE(), 1) 07/15/09 SELECT CONVERT(varchar(100), GETDATE(), 2) 09.07.15 SELECT CONVERT(varchar(100), GETDATE(), 3) 15/07/09 SELECT CONVERT(varchar(100), GETDATE(), 4) 15.07.09 SELECT CONVERT(varchar(100), GETDATE(), 5) 15-07-09 SELECT CONVERT(varchar(100), GETDATE(), 6) 15 07 09 SELECT CONVERT(varchar(100), GETDATE(), 7) 07 15, 09 SELECT CONVERT(varchar(100), GETDATE(), 8) 16:06:26 SELECT CONVERT(varchar(100), GETDATE(), 9) 07 15 2009 4:06:26:513PM SELECT CONVERT(varchar(100), GETDATE(), 10) 07-15-09 SELECT CONVERT(varchar(100), GETDATE(), 11) 09/07/15 SELECT CONVERT(varchar(100), GETDATE(), 12) 090715 SELECT CONVERT(varchar(100), GETDATE(), 13) 15 07 2009 16:06:26:513 SELECT CONVERT(varchar(100), GETDATE(), 14) 16:06:26:513 SELECT CONVERT(varchar(100), GETDATE(), 20) 2009-07-15 16:06:26 SELECT CONVERT(varchar(100), GETDATE(), 21) 2009-07-15 16:06:26.513 SELECT CONVERT(varchar(100), GETDATE(), 22) 07/15/09 4:06:26 PM SELECT CONVERT(varchar(100), GETDATE(), 23) 2009-07-15 SELECT CONVERT(varchar(100), GETDATE(), 24) 16:06:26 SELECT CONVERT(varchar(100), GETDATE(), 25) 2009-07-15 16:06:26.513 SELECT CONVERT(varchar(100), GETDATE(), 100) 07 15 2009 4:06PM SELECT CONVERT(varchar(100), GETDATE(), 101) 07/15/2009 SELECT CONVERT(varchar(100), GETDATE(), 102) 2009.07.15 SELECT CONVERT(varchar(100), GETDATE(), 103) 15/07/2009 SELECT CONVERT(varchar(100), GETDATE(), 104) 15.07.2009 SELECT CONVERT(varchar(100), GETDATE(), 105) 15-07-2009 SELECT CONVERT(varchar(100), GETDATE(), 106) 15 07 2009 SELECT CONVERT(varchar(100), GETDATE(), 107) 07 15, 2009 SELECT CONVERT(varchar(100), GETDATE(), 108) 16:06:26 SELECT CONVERT(varchar(100), GETDATE(), 109) 07 15 2009 4:06:26:513PM SELECT CONVERT(varchar(100), GETDATE(), 110) 07-15-2009 SELECT CONVERT(varchar(100), GETDATE(), 111) 2009/07/15 SELECT CONVERT(varchar(100), GETDATE(), 112) 20090715 SELECT CONVERT(varchar(100), GETDATE(), 113) 15 07 2009 16:06:26:513 SELECT CONVERT(varchar(100), GETDATE(), 114) 16:06:26:513 SELECT CONVERT(varchar(100), GETDATE(), 120) 2009-07-15 16:06:26 SELECT CONVERT(varchar(100), GETDATE(), 121) 2009-07-15 16:06:26.513 SELECT CONVERT(varchar(100), GETDATE(), 126) 2009-07-15T16:06:26.513 SELECT CONVERT(varchar(100), GETDATE(), 130) 23 ??? 1430 4:06:26:513PM SELECT CONVERT(varchar(100), GETDATE(), 131) 23/07/1430 4:06:26:513PM
--時間比較(毫秒數) DATEDIFF(MS, '1970-01-01 08:00:00.000', '2022-06-06 12:30:30.555');