簡體   English   中英

SQL 服務器 mm/dd/yy 或 yy/dd/mm 或其他格式的 T-SQL 日期數據類型格式?

[英]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/dd12/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM