微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL Server的T-SQL日期数据类型格式是mm / dd / yy或yy / dd / mm还是其他?

如何解决SQL Server的T-SQL日期数据类型格式是mm / dd / yy或yy / dd / mm还是其他?

我正在使用此版本的sql Server

/**
 * @Groups({"foo"})
 */
private ?Foo duplicatedFrom;

有关语言环境设置的信息

/**
 * @Groups({"foo"})
 */
 public function getDuplicatedFromId(): ?string
 { 
    return $this->getDuplicatedFrom()->getId();
 }

我阅读了参考文件

enter image description here

(来源:https://docs.microsoft.com/en-us/sql/t-sql/data-types/date-transact-sql?view=sql-server-ver15

我有

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) 

enter image description here

作为参考文件指出,我认为是select @@LANGUAGE; -- result: us_english DECLARE @date DATE = '12/10/05'; DECLARE @datetime DATETIME = @date; SELECT @date AS '@date',@datetime AS '@datetime'; ; 1910年12月5日),但返回的时间是 2005年12月10日

参考文件有误吗?如何容易理解这些格式?如何理解和记住?

解决方法

首先是第一-None of the Date/Time data types is stored with the display format in SQL Server.
其次,您执行了select @@LANGUAGE;,然后又回到了us_english-继续运行

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 Server时,语言设置与登录名的默认语言相关,这意味着不同的登录名可能会有不同的语言符号,当然,可以更改language和/或date format设置-得出结论-

您永远不要依赖语言设置来显示日期/时间字符串。相反,请使用ISO 8601中指定的一种格式,因为这是保证可以正确解释为有效日期/时间值的仅有两种格式,而与语言和日期格式设置无关,而与实际数据类型无关, Even DateTime这是一个原因why you should never use DateTime again)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。