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 为我指明了正确的方向。
我已经将 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 为我指明了正确的方向。