sqlserver獲取當月、年的第一天和最后一天


-- 當月第一天
select dateadd(month, datediff(month, 0, getdate()), 0)

-- 當月最后一天(思路:下月的第一天減去一天)
select dateadd(month, datediff(month, 0, dateadd(month, 1, getdate())), -1)

-- 當年第一天
select dateadd(year, datediff(year, 0, getdate()), 0)

-- 當年最后一天(思路:下年的第一天減去一天)
select dateadd(year, datediff(year, 0, dateadd(year, 1, getdate())), -1)

--------------------------------------------------------------------------------------------------

函數datediff(month, 0, getdate())是計算當前日期和“1900-01-01 00:00:00.000”這個日期之間的月數。

記住:日期和時間變量和毫秒一樣是從“1900-01-01 00:00:00.000”開始計算的。這就是為什么你可以在DATEDIFF函數中指定第一個時間表達式為“0”。

下一個函數是DATEADD,增加當前日期到“1900-01-01”的月數。通過增加預定義的日期“1900-01-01”和當前日期的月數,我們可以獲得這個月的第一天。另外,計算出來的日期的時間部分將會是“00:00:00.000”。

這個計算的技巧是先計算當前日期到“1900-01-01”的時間間隔數,然后把它加到“1900-01-01”上來獲得特殊的日期,這個技巧可以用來計算很多不同的日期。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM