[英]SQL Server : convert string with format dddd mm/dd/yy to date
[英]T-SQL date data type format for SQL Server mm/dd/yy or yy/dd/mm or something else?
我用的是這個版本的SQL Server
Microsoft SQL Server 2019 (RTM-GDR) (KB4517790) - 15.0.2070.41 (X64) Oct 28 2019 19:56:59 Copyright (C) 2019 Microsoft Corporation Developer Edition (64-bit) on Windows 10 Pro 10.0 <X64> (Build 19041: ) (Hypervisor)
有關語言環境設置的信息
select @@LANGUAGE;
-- result: us_english
我閱讀了參考文檔
(來源: https://learn.microsoft.com/en-us/sql/t-sql/data-types/date-transact-sql?view=sql-server-ver15 )
我有
DECLARE @date DATE = '12/10/05';
DECLARE @datetime DATETIME = @date;
SELECT @date AS '@date', @datetime AS '@datetime';
正如參考文件指出的那樣,我認為它是mm/[yy]yy/dd
( 12/10/05
;1910 年 12 月 5 日),但它返回2005 年 12 月 10 日。
參考文件錯了嗎? 如何通俗易懂地理解這些格式? 如何理解和記憶?
首先是第一件事 - SQL 服務器中沒有任何日期/時間數據類型以顯示格式存儲。
其次,你已經執行select @@LANGUAGE;
然后找回us_english
- go 並運行
SELECT dateformat
FROM sys.syslanguages
WHERE [Name] = @@LANGUAGE;
您將看到mdy
的結果——這意味着日期值的字符串表示格式是以下格式之一:
[m]m/dd/[yy]yy
[m]m-dd-[yy]yy
[m]m.dd.[yy]yy
第三,你要注意的是,在處理SQL服務器時,語言設置與登錄的默認語言有關,也就是說不同的登錄可能會有不同的語言設置,當然也可以更改語言和/或日期格式設置 - 得出結論 -
您永遠不應依賴日期/時間字符串表示的語言設置。 相反,使用ISO 8601中指定的格式之一,因為只有這兩種格式可以保證被正確解釋為有效的日期/時間值,無論語言和日期格式設置如何,也無論實際數據類型如何,甚至DateTime
和這就是為什么你不應該再次使用DateTime
的原因之一)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.