MS SQL 使用 SQL 取得日期部份數值
在 MS SQL 6.5 中使用 getDate() 系統函數會取到精度達微秒的時間值,
所以若是只想取得只有 yyyymmdd 部分或是 yyyymmdd hh:mm:ss 部分的時間值就需要加工處理
我們可以利用 Convert 型別轉換函數來處理
語法:CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
select GetDate()
,CONVERT(datetime,CONVERT(char(10), GetDate(),111),111) as YMD
,CONVERT(datetime,CONVERT(char(11), GetDate(),111) + CONVERT(char(8), GetDate(),108),111) as YMDHMS
其中若是 GetDate() = 2005-02-06 11:22:33.456
則 YMD = 2005-02-06
而 YMDHMS = 2005-02-06 11:22:33
另外在 MS SQL 2000 支援較多的 style 格式參數,可參考線上手冊。
如果在 SQL 2000 Server 環境經常使用的話,可以建立成使用者自定函數
CREATE FUNCTION dbo.getDateYMD
(@dt datetime )
RETURNS datetime
AS
BEGIN
RETURN ( CONVERT(datetime,CONVERT(char(10), @dt,111),111) )
END
go
CREATE FUNCTION dbo.getDateYMDHMS
(@dt datetime )
RETURNS datetime
AS
BEGIN
RETURN ( CONVERT(datetime,CONVERT(char(11), @dt,111) + CONVERT(char(8), @dt,108),111) )
END
這樣就可以用下列語法查詢
select getDate(), dbo.getDateYMD(getDate()), dbo.getDateYMDHMS(getDate())
Leave a Reply