2008年2月26日 星期二

MS SQL 2000 日期型態

SQL 2000 的 smalldatetime 儲存方式只有一種
至於中間要用什麼符號呈現是你自己在撰寫程式的時候去變更的
跟欄位裡儲存的資料無關

smalldatetime精確度只到分
預設為抓系統年月日:
CONVERT(smalldatetime, CONVERT(char(4),YEAR(GETDATE()))+'-'+CONVERT(char(2),MONTH(GETDATE()))+'-'+CONVERT(char(2),DAY(GETDATE())))
預設為抓系統年月日時分:
GETDATE()

--Getdate()
Select Getdate()

--YYYY/MM/DD
Select Convert(varchar(10),Getdate(),111)

--YYYYMMDD
Select Convert(varchar(10),Getdate(),112)

--HH:MM:SS
Select Convert(varchar(8),Getdate(),108)

--HH:MM:SS:mmm
Select Convert(varchar(12),Getdate(),114)

--HHMMSS
Select Replace(Convert(varchar(8),Getdate(),108),':','')

--HHMMSSmmm
Select Replace(Convert(varchar(12),Getdate(),114),':','')

--YYYY/MM/DD HH:MM:SS
Select Replace(Convert(varchar(30),Getdate(),120),'-','/')

--YYYY/MM/DD HH:MM:SS
Select Replace(Convert(varchar(30),Getdate(),121),'-','/')

--YYYY/MM/DD HH:MM:SS
Select Convert(varchar(10),Getdate(),111) + Space(1) + Convert(varchar(8),Getdate(),108)

--YYYYMMDDHHMMSS
Select Convert(varchar(10),Getdate(),112) + Replace(Convert(varchar(8),Getdate(),108),':','')


本問題有更深一層之意義;不單是格式問題,若是日期型態之預設值不同,

insert into table ([date]) values ('06/3/15')

可能 ymd 出現 '2006/03/15' , 也可能出現 '2015/03/06'