DECLARE @Date DATETIME SET @Date=GETDATE() –前一天,給定日期的前一天 SELECT DATEADD(DAY,-1,@Date) AS ‘前一天’ –后一天,給定日期的后一天 SELECT DATEADD(DAY,1,@Date) AS ‘后一天’ GO –月初,計算給定日期所在月的第一天 –這個計算的技巧是先計算當前日期到“1900-01-01”的時間間隔數,然后把它加到“1900-01-01”上來獲得特殊的日期,這個技巧可以用—來計算很多不同的日期。 DECLARE @Date DATETIME SET @Date=GETDATE() SELECT DATEADD(MONTH,DATEDIFF(MONTH,’1900-01-01′,@Date),’1900-01-01′) AS ‘所在月的第一天’ –精簡算法,根據SQL Server的時間表示方式可知,’1900-01-01′ 可以用0代替 SELECT DATEADD(MONTH,DATEDIFF(MONTH,0,@Date),0) AS ‘所在月的第一天’ –上面兩種算法精確到天 時分秒均為00:00:00.000 –下面算法課以保留時分秒 –思路:用給定日期減去月第一天與給定日期差的天數 SELECT DATEADD(DAY,1-DATEPART(DAY,@Date),@Date) GO –月末,計算給定日期所在月的最后一天 DECLARE @Date DATETIME SET @Date=GETDATE() –思路:當前月的下一月1號在減1天 SELECT DATEADD(DAY,-1,DATEADD(MONTH,1+DATEDIFF(MONTH,’1900-01-01′,@Date),’1900-01-01′)) AS ‘所在月的最一天’ SELECT DATEADD(MONTH,1+DATEDIFF(MONTH,’1900-01-01′,@Date),’1900-01-01′)-1 AS ‘所在月的最一天’ –1900-01-01 用0代替 SELECT DATEADD(DAY,-1,DATEADD(MONTH,1+DATEDIFF(MONTH,0,@Date),0)) AS ‘所在月的最一天’ SELECT DATEADD(MONTH,1+DATEDIFF(MONTH,0,@Date),0)-1 AS ‘所在月的最一天’ –思路:與月初計算思路相同 SELECT DATEADD(MONTH,DATEDIFF(MONTH,’1989-12-31′,@Date),’1989-12-31′) AS ‘所在月的最一天’ –精簡算法,’1989-12-31′ 用-1代替 SELECT DATEADD(MONTH,DATEDIFF(MONTH,-1,@Date),-1) AS ‘所在月的最一天’ –保留時分秒的算法 SELECT DATEADD(DAY,-1,DATEADD(MONTH,1,DATEADD(DAY,1-DATEPART(DAY,@Date),@Date))) GO –其他月計算 –計算給定日期所在月的上月第一天 DECLARE @Date DATETIME SET @Date=GETDATE() –當前月第一天減去一個月 SELECT DATEADD(MONTH,-1,DATEADD(MONTH,DATEDIFF(MONTH,0,@Date),0)) AS ‘上月第一天’ –簡化 SELECT DATEADD(MONTH,DATEDIFF(MONTH,0,@Date)-1,0) AS ‘上月第一天’ –另一種當前月第一天算法 SELECT DATEADD(MONTH,-1,DATEADD(DAY,1-DATEPART(DAY,@Date),@Date)) ‘上月第一天’ GO
20
01-2014
該日志
2014年01月20日發表在網絡安全技術分類下,
通告目前不可用,你可以至底部留下評論。
轉載請注明: SQL Server 中的時間算法 | 鄭州計算機學校_鄭州電腦學校_鄭州電腦培訓
轉載請注明: SQL Server 中的時間算法 | 鄭州計算機學校_鄭州電腦學校_鄭州電腦培訓