看来这个问题被问了很多,但没有一个答案给了我结果。我在这里拉我的头发...所以希望有人有答案。SQL日期格式日期和月份混合
我有一台运行SQL Server 2005的生产服务器。我备份了数据库,并将其恢复到笔记本电脑的SQL Server Express实例中。现在日期查询受到严重影响。在刺激中。服务器全部存储为“4/13/2011 12:00:00 AM”格式,但在我的笔记本电脑上显示为“2011-04-14 00:00:00.000”。当我在“2011年4月14日”尝试查找条目时发生查询时,笔记本电脑给我提供了错误“将varchar数据类型转换为日期时间数据类型导致超出范围值”。 编辑:这个确切的查询在生产SQL服务器上运行良好。 (我使用SSMS运行查询...不是应用程序/代码)
我确定我的笔记本电脑的Windows区域设置与服务器(英语(美国))相同,并且区域和语言控制面板完全相同。
最后我跑了以下两个查询:
select name ,alias, dateformat
from syslanguages
where langid =
(select value from master..sysconfigures
where comment = 'default language')
select @@language
分别 “英国” 放弃 “*美国英语,英语,MDY *” ......和的结果。这位英国人来自哪里?!现在,当我在查询之前(在管理工作室中)运行此命令时(在管理工作室中)
SET DATEFORMAT mdy
然后,一切正常!但在syslanguages查询中,它似乎已经是mdy格式。我不打算在整个地方用“SET DATEFORMAT”重写我的应用程序 - 所以希望有人有线索。也许我的SQL Express安装有误,我必须重新安装它?
我会继续修补,希望能够让这个工作。
不知道这是否是一个答案,但另一件事来检查将是数据库的区域设置,而不是服务器及其上做到这一点。可能已决定使用不同的“英文”来存储数据。 – James 2011-04-13 21:59:02
“当我做一个查询试图找到关于”你用什么来做的? SSMS? – 2011-04-13 22:15:29
你将如何检查SQL服务器数据库的区域设置?我可以更改排序规则,但我确定这不相关。 是的 - 我使用SSMS(快速版)来运行这些查询。 – MikeMurko 2011-04-14 00:45:47