SQL Server 没有获取日期格式 dd-mm-yyyy

Posted

技术标签:

【中文标题】SQL Server 没有获取日期格式 dd-mm-yyyy【英文标题】:SQL Server doesn't get date format dd-mm-yyyy 【发布时间】:2021-06-12 04:35:07 【问题描述】:

我正在尝试将日期变量插入我的 SQL 服务器。 我要插入的输入格式是:dd-mm-yyyy 我的 SQL Server 列(定义为 DATE 类型)期望 mm-dd-yyyy。

我的电脑日期格式是 dd-mm-yyyy。

错误信息:

从字符串转换日期和/或时间时转换失败。

问题:

    为什么预期格式是 mm-dd-yyyy 而不是 dd-mm-yyyy? 如何使 INSERT 命令使用这种或其他日期格式?

谢谢。

【问题讨论】:

您如何尝试将行插入到您的表中?日期在 db 引擎中具有不可读的二进制格式。 【参考方案1】:

在为日期传递文字字符串时,您的 PC 用于日期的格式无关紧要,您用于连接 SQL Server 的 LOGIN 的语言设置却很重要。由于该值被解释为MM-dd-yyyy,这很可能意味着您的语言设置是(美国)ENGLISH

因此,如果您是唯一使用LOGIN 的人,您可能希望更改LOGIN 的语言以适合您自己。大多数欧洲语言,包括BRITISH 英语(因为英国人不会说英语微软??)使用格式dd-MM-yyyy

真的,然而,你应该做的是使用明确的日期格式,在 SQL Server 中只有 2 个,无论语言设置和数据类型如何。这两种格式是yyyyMMddyyyy-MM-ddThh:mm:ss.nnnnnnn。如果您总是使用较新的日期和时间数据类型(所以不是datetimesmalldatetime),那么yyyy-MM-dd( hh:mm:ss.nnnnnnn) 也是明确的,但是,因为它是针对旧数据类型的特定语言那么我通常不建议使用它。

存储方面,日期和时间数据类型没有格式,因此您的列不是“预期”格式为 MM-dd-yyyy 的值,因为它不保留该值的“格式数据”已传入。同样,13-12-2020 这样的值起作用的唯一原因是您的语言设置,它使用 mdy 进行日期解释。

【讨论】:

【参考方案2】:

真的有两件事,

首先,您可以控制每个连接的预期日期格式。在发出插入语句之前,请酌情执行set dateformat dmy;set dateformat mdy;

其次,始终建议使用 YYYYMMDD 的 ISO 格式的日期,因此如果您插入数据“20210314”,它将始终被正确处理。

【讨论】:

以上是关于SQL Server 没有获取日期格式 dd-mm-yyyy的主要内容,如果未能解决你的问题,请参考以下文章

从 SQL Server 获取 8601 格式的日期时间

sql server 日期列格式

sqlserver获取当前日期条件查询

在 SQL Server 中获取当前日期? [复制]

sql server2000如何将数字转换为日期时间

有没有办法在 SQL Server 中将日期格式化为 MM DD YYYY 而不是 YYYYMMDD? [复制]