我正在尝试将日期变量插入SQL服务器。我尝试插入的输入格式是:dd-mm-yyyy我的SQL server列(定义为DATE类型(需要mm-dd-yyyy。
我的电脑日期格式是dd-mm-yyyy。
错误消息:
从字符串转换日期和/或时间时转换失败。
问题:
- 为什么预期格式是mm-dd-yyyy而不是dd-mm-yyyy
- 如何使INSERT命令与此或其他日期格式一起使用
谢谢。
在传递日期的文字字符串时,您的电脑用于日期的格式无关紧要,而用于连接SQL Server的LOGIN
的语言设置则无关紧要。由于该值被解释为MM-dd-yyyy
,这很可能意味着您的语言设置是(美国(ENGLISH
。
因此,如果你是唯一使用LOGIN
的人,你很可能想更改LOGIN
的语言以适合自己。大多数欧洲语言,包括BRITISH
英语(因为英国人不会说英语微软?😒)使用格式CCD_ 7。
实际上,但是,您应该使用一种明确的日期格式,无论语言设置和数据类型如何,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
进行日期解释。
实际上有两件事,
首先,您可以控制每个连接的预期日期格式。在发出插入语句之前,请根据需要执行set dateformat dmy;
或set dateformat mdy;
。
其次,建议使用YYYYMMDD的ISO格式的日期,因此如果插入数据"20210314",它将始终得到正确处理。