星期五, 5月 24, 2024

[SQL] 日期時間分隔符號

課程中老師提到一個日期欄位轉型案例,日期參數來源日期是以 / 符號來進行分隔,但因為 MS SQL datetime 是以 - 符號,所以 developer 對日期欄位進行轉換,目的只是為了日期分隔符號,示意如下
SELECT 
	ModifiedDate AS [以 - 分隔],
	CONVERT(varchar(10) , ModifiedDate , 111) AS [以 / 分隔]
FROM Person.Person
WHERE CONVERT(varchar(10) , ModifiedDate , 111) = '2024/03/27'
 Language 和 Dateformat

日期會受到  Language 和 Dateformat 影響,所以要先確定連線設定值
DBCC USEROPTIONS;


日期分隔範例

從 CAST 和 CONVERT 文章內找到不同分隔符號,就都拿來試看看,下述都是可以正常篩選出資料的分隔符號,沒想到逗點和空白也行
-- 無分隔
SELECT * FROM Person.Person WHERE ModifiedDate = '20240327'

-- - 分隔
SELECT * FROM Person.Person WHERE ModifiedDate = '2024-03-27'

-- / 分隔
SELECT * FROM Person.Person WHERE ModifiedDate = '2024/03/27'

-- . 分隔
SELECT * FROM Person.Person WHERE ModifiedDate = '2024.03.27'

-- 空白分隔
SELECT * FROM Person.Person WHERE ModifiedDate = '2024 03 27'

從執行計畫 operator 來觀察上述語法執行,其實內部都是用 - 分隔來執行

以前寫 VFP 時也做過類似日期轉換,因為擔心 VFP Date 資料型態不相容 MS SQL,所以當下都把 VFP 日期參數轉成 ISO 格式才傳進 MS SQL 內,後來也發現是多此一舉,聽到這 case 時格外親切,XD

沒有留言:

張貼留言