将 SQL Server 移至新域后,YYYY-MM-DD 已更改为 YYYY-DD-MM 我如何切换回来?

Ale*_*nov 2 sql-server-2008 date-format

我已经移动了我的 SQL Server 的域,虽然一切主要都在工作,但查询的日期格式似乎已经改变。

所以如果我运行这个:

select convert(datetime,'2012-02-13')
Run Code Online (Sandbox Code Playgroud)

我得到

消息 242,级别 16,状态 3,第 1 行
varchar 数据类型到 datetime 数据类型的转换导致值超出范围。

当我跑

select @@Language, @@Langid
Run Code Online (Sandbox Code Playgroud)

我得到

英国 | 23

我试图设置 sp_defaultlanguage 但这似乎没有区别。

我还检查了控制面板中的区域设置,似乎也设置为英国。

甚至此代码示例也会导致问题:

set language british

select convert(datetime, '2012-02-13')
Run Code Online (Sandbox Code Playgroud)

结果

将语言设置更改为英国。消息 242,级别 16,状态 3,第 3 行 varchar 数据类型到 datetime 数据类型的转换导致值超出范围。

gbn*_*gbn 8

Windows 设置不影响 SQL Server 分析日期。有一种服务器级别的默认语言,可以被登录级别的一组语言覆盖。

就目前而言,SQL Server 的“安全”格式无论如何都是 yyyymmdd。尝试使用它

创建登录

指定要分配给登录名的默认语言。如果未包含此选项,则默认语言将设置为服务器的当前默认语言。如果稍后更改服务器的默认语言,则登录的默认语言保持不变。

对于服务器,您可以通过以下方式使用“默认语言”sp_configure

当然,您可以随时运行 SET LANGUAGE 或 SET DATEFORMAT

  • @AlexAndronov - 英式英语不是这种格式的正确语言。检查旧服务器中的登录名使用的是什么。对我来说,它在“英式英语”下失败,但在“英语”或“简体中文”下成功。我的猜测是您的旧登录使用的是美国英语。 (3认同)