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 个,无论语言设置和数据类型如何。这两种格式是yyyyMMdd
和yyyy-MM-ddThh:mm:ss.nnnnnnn
。如果您总是使用较新的日期和时间数据类型(所以不是datetime
或smalldatetime
),那么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的主要内容,如果未能解决你的问题,请参考以下文章