SQL 从 2005 年插入 2012 年的神秘日期

SQL Insert Date Mystery on 2012 from 2005

我已经将 2005 数据库迁移到 2012

有一个存储过程 运行 将今天的日期插入 table

IF NOT EXISTS(SELECT * FROM tblTime WHERE [Day] = DATEPART(day,GETDATE())
                                    AND [Month] = DATEPART(month,GETDATE())
                                    AND [Year]= DATEPART(year,GETDATE()) )
BEGIN
    INSERT INTO tblTime (Period,[Day],[Month],[Year],MonthPrefix)
        VALUES (CONVERT(VARCHAR(10), GETDATE(), 105),
                DATEPART(day,GETDATE()),
                DATEPART(month,GETDATE()),
                DATEPART(year,GETDATE()),
                CASE DATEPART(month,GETDATE()) 
                    WHEN 1 THEN 'JAN'
                    WHEN 2 THEN 'FEB'
                    WHEN 3 THEN 'MAR'
                    WHEN 4 THEN 'APR'
                    WHEN 5 THEN 'MAY'
                    WHEN 6 THEN 'JUN'
                    WHEN 7 THEN 'JUL'
                    WHEN 8 THEN 'AUG'
                    WHEN 9 THEN 'SEP'
                    WHEN 10 THEN 'OCT'
                    WHEN 11 THEN 'NOV'
                    WHEN 12 THEN 'DEC'
                    END
                )
END

当这是 运行 在新的 2012 SQL 框中时,日期被输入为

2015-12-0600:00:00

但旧版 2005 上的相同 SP 会显示为

2015-06-1200:00:00

我已经检查了 2 个服务器是否具有相同的语言设置等。

但是有什么我遗漏的吗。

非常感谢阅读。

你可以运行

DBCC USEROPTIONS

在两个不同的 SQL 框中检查日期格式。 要设置该值,请使用

SET DATEFORMAT ymd

或任何其他组合,如 mdy、dmy 等

我必须为每个用户更改语言。

设置为英语,但对我来说应该是英式英语。

更改后,重新启动实例。

感谢以上 post 为我指明了正确的方向。