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

相關連結

  

此文章由 will 發表於 2008/4/11 上午 12:01:00

永久連結 | 評論 (2) | 此文章的RSSRSS comment feed |

分類: SQL Server | Tips

標籤: ,

收藏:

相關文章

評論

六月 9. 2008 14:33

shiro

謝謝分享!
痾我想請問 如何計算使用bulk insert資料所花費的時間呢
不知道有沒有這類語法 謝謝

shiro tw

六月 9. 2008 17:48

will

select getdate();

BULK INSERT AdventureWorks.Sales.SalesOrderDetail
FROM 'f:\orders\lineitem.tbl'
WITH
(
FIELDTERMINATOR =' |',
ROWTERMINATOR =' |\n'
);

select getdate();

will tw

新增評論


(將顯示您的Gravatar圖示)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



線上預覽

十月 13. 2008 03:56