2013年7月16日 星期二

在 Transact-SQL 的預設日期 DATETIME 格式是 yyyy-mm-dd hh:mm:ss.mmm



在 Transact-SQL 的預設日期 DATETIME 格式是 yyyy-mm-dd hh:mm:ss.mmm

例如:

SELECT GETDATE()
=> 2007-12-31 10:30:20.517

而在程式中常常需要日期的處理,尤其是什麼只要日期不要時間啊,只要時間不要日期啊,或是日期的 Format 等等,為了省掉在程式上撰寫轉換函數,這裡有些些 Transact-SQL 常用到的日期時間格式轉換,方法如下:

SELECT CONVERT(VARCHAR(18) , getdate(), 100)
=> 12 31 2007 10:30AM

SELECT CONVERT(VARCHAR(10) , GETDATE(), 101 )
=> 12/31/2007

SELECT CONVERT(VARCHAR(10) , GETDATE(), 102 )
=> 2007.12.31

SELECT CONVERT(VARCHAR(10) , GETDATE(), 103 )
=> 31/12/2007

SELECT CONVERT(VARCHAR(10) , GETDATE(), 104 )
=> 31.12.2007

SELECT CONVERT(VARCHAR(10) , GETDATE(), 105 )
=> 31-12-2007

SELECT CONVERT(VARCHAR(10) , GETDATE(), 106 )
=> 31 12 2007

SELECT CONVERT(VARCHAR(11) , GETDATE(), 107 )
=> 12 31, 2007

SELECT CONVERT(VARCHAR(8) , GETDATE(), 108 )
=> 10:30:20

SELECT CONVERT(VARCHAR(25) , GETDATE(), 109)
=> 12 31 2007 10:30:20:517AM

SELECT CONVERT(VARCHAR(10) , GETDATE(), 110 )
=> 12-31-2007

SELECT CONVERT(VARCHAR(10) , GETDATE(), 111 )
=> 2007/12/31

SELECT CONVERT(VARCHAR(8) , GETDATE(), 112 )
=> 20071231

SELECT CONVERT(VARCHAR(23) , GETDATE(), 113 )
=> 31 12 2007 10:30:20:517

SELECT CONVERT(VARCHAR(12) , GETDATE(), 114 )
=> 10:30:20:517

SELECT CONVERT(VARCHAR, GETDATE(), 120 )
=> 2007-12-31 10:30:20

最後
SELECT REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR, GETDATE(), 120 ),'-',''),' ',''),':','')
=> 20071231103020
這個適合作為流水帳號,在同一秒不query兩次的前提下是個產生不重複值的好方法

不受時間限制,也可以用 NEWID()
select newid()




如果在我的資料庫...即有的欄位【transdate】...
其日期的格式是「20080402」...
如果我想要把他轉成『2008/04/02』...

CONVERT(DATETIME,'20080402')
就能將字串'20080402'變成日期

所以 SELECT CONVERT(VARCHAR(10), CONVERT(DATETIME, '20080402'), 111) 就能將字串'20080402'變成字串'2008/04/02'

資料來源:
http://skyerh.blogspot.com/2007/12/sql-convert.html
http://blog.makk.idv.hk/tsql_datetime_format/


沒有留言: