SQL 服务器从字符串转换日期的默认格式是什么

What is SQL Sever's default format for converting dates from strings

我正在尝试使用第 3 方应用程序,该应用程序在 varchar 列中存储日期(可以由用户输入,在某些情况下几乎不需要验证),然后使用 CONVERT( DATETIME, MY_COLUMN ) - 没有明确的format - 当它想将它们用作日期时。呃

毫不奇怪,这经常失败。但不总是。如果不指定,SQL 对 CONVERT 的默认格式是什么?它似乎是 101(即 mm/dd/yyyy),但情况总是如此吗?它取决于数据库或服务器排序规则或其他设置吗? MSDN CAST and CONVERT docs不说了。

我们正在使用 SQL Server 2014。

对于默认设置,它取决于服务器或登录级别的默认语言设置,它隐含地将 dateformatdatefirst 设置为文化相关设置。您还可以根据 login 更改默认值。例如

alter login [aucuparia] with default_language=[british];

这些可以在会话级别更改 set language, set dateformat, and set datefirst

查看当前连接的语言设置:

select @@language;

查看每种语言的设置:

select langid, alias, DateFormat, DateFirst, months, shortmonths, days 
from sys.syslanguages;