The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

分享一些與日期相關的 SQL 語法技巧

日期格式很常用,但有些特殊的需求要計算出來還蠻麻煩了,底下這些是我之前記錄下來的一些小技巧,真的要寫的時候若一些 SQL 函數不熟還真不容易寫出來呢!

顯示當下日期時間

select getdate() 

顯示本月第一天的語法(不含時間的部分)

select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)

顯示上個月最後一天(不含時間的部分)

select DATEADD(dd, -1, DATEADD(mm, DATEDIFF(mm, 0, getdate()), 0))

顯示這個月最後一天(不含時間的部分)

select DATEADD(mm,  1, DATEADD(dd, -1, DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)))

將「日期字串」轉成「日期格式 」

SELECT CONVERT(datetime, '20080401 11:35:00.000') 

P.S. 其實不是 100% 會轉成功,不過大部分人看的懂得日期時間格式應該都會自動轉換成功。

將「日期格式」轉成「日期字串」(可自訂輸出格式)

請參考此文章:用 SQL Server 中的 CONVERT 函數處理日期字串

取得目前月份的數值,若小於 10 則補 0 ( 回傳字串格式 ) ( 例如: 2008-04-11 會回傳  04 )

SELECT REPLACE(STR(datepart(mm, getdate()), 2, 0), ' ', '0')

P.S. 若用 datepart(mm, getdate()) 的話只會回傳 4 而已,並不會補零 ( 因為是 int 型別 )

相關連結