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)
-- 當天零時2018-10-15 00:00:00.000
select dateadd(day, datediff(day, 0, getdate()), 0)
-------------------------------------------------------------------------------------------------
-
函數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」上來得到特
殊的日期,這個技巧能夠用來計算不少不一樣的日期。函數

相關文章
相關標籤/搜索