我之前一直認為 SQL Server 針對日期處理的函數不夠多(如果跟 MySQL 比較),尤其是處理日期欄位轉字串的時候,常常因為要輸出特定的格式而懊惱不已,常常一不小心就寫了一長串,很不易閱讀。 
例如說初學者可能為了輸入一個 "2008-2-27" 的格式會這樣寫: 
	
	[code:tsql] 
	
	
	select convert(varchar(4),Year(getdate())) + '-' + convert(varchar(2), month(getdate()))+ '-' + convert(varchar(2), day(getdate())) 
	
	
	[/code] 
	
但如過客戶要求 "2008-02-27" 這種格式呢?!我看會寫瘋掉了,你可能會這樣寫: 
	
	[code:tsql] 
	
	
	select 
	 convert(varchar(4),Year(getdate())) + '-' + 
	 CASE month(getdate()) 
	 WHEN  1 THEN '0' + convert(varchar(2), month(getdate()))
	 WHEN  2 THEN '0' + convert(varchar(2), month(getdate()))
	 WHEN  3 THEN '0' + convert(varchar(2), month(getdate()))
	 WHEN  4 THEN '0' + convert(varchar(2), month(getdate()))
	 WHEN  5 THEN '0' + convert(varchar(2), month(getdate()))
	 WHEN  6 THEN '0' + convert(varchar(2), month(getdate()))
	 WHEN  7 THEN '0' + convert(varchar(2), month(getdate()))
	 WHEN  8 THEN '0' + convert(varchar(2), month(getdate()))
	 WHEN  9 THEN '0' + convert(varchar(2), month(getdate()))
	 ELSE convert(varchar(2), month(getdate())) END +
	  '-' + 
	 CASE day(getdate()) 
	 WHEN  1 THEN '0' + convert(varchar(2), day(getdate()))
	 WHEN  2 THEN '0' + convert(varchar(2), day(getdate()))
	 WHEN  3 THEN '0' + convert(varchar(2), day(getdate()))
	 WHEN  4 THEN '0' + convert(varchar(2), day(getdate()))
	 WHEN  5 THEN '0' + convert(varchar(2), day(getdate()))
	 WHEN  6 THEN '0' + convert(varchar(2), day(getdate()))
	 WHEN  7 THEN '0' + convert(varchar(2), day(getdate()))
	 WHEN  8 THEN '0' + convert(varchar(2), day(getdate()))
	 WHEN  9 THEN '0' + convert(varchar(2), day(getdate()))
	 ELSE convert(varchar(2), day(getdate())) END 
	
	
	[/code] 
	
別笑!我真的看過有人這樣寫!呵呵~ 
其實 SQL Server 早就有個 CONVERT 函數可以幫我們做這件事!如果你要輸出 2008-02-27 這種日期格式的字串,可以這樣寫:  
	
	[code:tsql] 
	
	
	SELECT CONVERT(char(10), getdate(), 120) 
	
	
	[/code] 
	
是不是短很多呢? ^__^ 
底下列出一些我常用的語法: 
	- 
	
	輸出格式:2008-02-27 00:25:13
 
 SELECT CONVERT(char(19), getdate(), 120)
 
 
 
- 
	
	輸出格式:2008-02-27
 
 SELECT CONVERT(char(10), getdate(), 20)
 
 
 
- 
	
	輸出格式:2008.02.27
 
 SELECT CONVERT(char(10), getdate(), 102)
 
 
 
- 
	
	
	
	輸出格式:08.02.27
 
 SELECT CONVERT(char(8), getdate(), 2)
 
 
 
 
 
- 
	
	
	輸出格式:2008/02/27
 
 SELECT CONVERT(char(10), getdate(), 111)
 
 
 
 
- 
	
	
	輸出格式:08/02/27
 
 SELECT CONVERT(char(8), getdate(), 11)
 
 
 
 
- 
	
	輸出格式:20080227
 
 SELECT CONVERT(char(8), getdate(), 112)
 
 
 
- 
	
	輸出格式:080227
 
 SELECT CONVERT(char(6), getdate(), 12)
 
 
想查詢完整的列表與說明可以到 MSDN 的 Transact-SQL Reference 去查詢 CAST and CONVERT 的詳細說明。 
相關連結