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 影響,所以要先確定連線設定值
日期分隔範例
從 CAST 和 CONVERT 文章內找到不同分隔符號,就都拿來試看看,下述都是可以正常篩選出資料的分隔符號,沒想到逗點和空白也行
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'
以前寫 VFP 時也做過類似日期轉換,因為擔心 VFP Date 資料型態不相容 MS SQL,所以當下都把 VFP 日期參數轉成 ISO 格式才傳進 MS SQL 內,後來也發現是多此一舉,聽到這 case 時格外親切,XD
- 參考資料
- [研究]SQL Server 2019 T-SQL 取得 ISO 8601標準之日期時間
- SQL Server:認識日期時間的分隔符號;搭配使用 SET DATEFORMAT、SET LANGUAGE
- ISO 8601
- 日期和時間類型 => 各日期都有 [ANSI 和 ISO 8601 合規性] 和 [date 支援的字串常值格式] 可以參考
沒有留言:
張貼留言