从2005年开始的SQL插入日期之谜

时间:2015-06-12 08:06:15

标签: sql-server sql-server-2005 sql-server-2012

我已将2005 db迁移到2012

有一个存储过程可以将今天的日期插入到表中

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-06 00:00:00

但旧版2005年的SP将会读到

2015-06-12 00:00:00

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

但是有什么我错过了。

非常感谢您阅读。

2 个答案:

答案 0 :(得分:1)

你可以运行

DBCC USEROPTIONS

在两个不同的SQL框上并查看dateformat。 要设置该值,请使用

SET DATEFORMAT ymd

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

答案 1 :(得分:0)

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

设置为英语,但我的实例应该是英式英语。

更改后,重新启动实例。

感谢上面的帖子指出我正确的方向。