我已将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台服务器是否具有相同的语言设置等。
但是有什么我错过了。
非常感谢您阅读。
答案 0 :(得分:1)
你可以运行
DBCC USEROPTIONS
在两个不同的SQL框上并查看dateformat。 要设置该值,请使用
SET DATEFORMAT ymd
或任何其他组合,如mdy,dmy等
答案 1 :(得分:0)
我必须更改每个用户的语言。
设置为英语,但我的实例应该是英式英语。
更改后,重新启动实例。
感谢上面的帖子指出我正确的方向。