2009年2月18日 星期三

分享一些與日期相關的 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 型別 )

轉載自http://blog.miniasp.com/post/2008/04/Share-some-SQL-syntax-tips.aspx

沒有留言:

張貼留言