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

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

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

错误信息:

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

问题:

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

谢谢。

【问题讨论】:

  • 您如何尝试将行插入到您的表中?日期在 db 引擎中具有不可读的二进制格式。

标签: sql sql-server date format sql-insert


【解决方案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”,它将始终被正确处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 2011-12-19
      • 2011-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多