【发布时间】:2020-10-25 09:56:01
【问题描述】:
我正在使用这个版本的 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://docs.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 日。
参考文件有误吗?这些格式如何通俗易懂?如何理解和记忆?
【问题讨论】:
-
参考文档还允许使用
mm/dd/yy,这无疑是您默认日期格式的设置方式。使用CONVERT确保您的字符串日期按预期解析总是最安全的... -
请注意
12/10/05因为mm/yy/dd实际上是 2010 年 12 月 5 日。请参阅 two digit year cutoff option -
您应该阅读您所引用的整个文档。 1) 绝对不是 1910,因为 49 以下的两位数年份被解释为 20xx(除非您另有配置) 2) “默认日期格式由当前语言设置确定。您可以使用SET LANGUAGE 和 SET DATEFORMAT 语句。”(引自参考文档)
-
此外,您不应依赖于您的 sql 实例的特定设置,而应使用明确的格式,如
yyyy-mm-dd或使用CONVERT,您可以自己指定格式 -
@Nick 我读了你的第二条评论,然后编辑了问题,这是我的错误。
标签: sql sql-server tsql sql-server-2017