繁体   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