我将默认日期(开始日期和结束日期)作为('1/1/1753 12:00:00 AM' & '12/31/9999 12:00:00 AM')传递给 sp。
这在 2005 年运行良好,但在 2008 年出现“SqlDateTime 溢出。必须在 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间”异常。
扭曲是这样的,当我从管理工作室运行 sp 时它工作正常,但在通过网站的实时服务器上它会出错。
提前致谢
我将默认日期(开始日期和结束日期)作为('1/1/1753 12:00:00 AM' & '12/31/9999 12:00:00 AM')传递给 sp。
这在 2005 年运行良好,但在 2008 年出现“SqlDateTime 溢出。必须在 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间”异常。
扭曲是这样的,当我从管理工作室运行 sp 时它工作正常,但在通过网站的实时服务器上它会出错。
提前致谢
我同意 Ed Harper 的观点,即问题可能是不同环境之间的语言环境或语言设置差异。我不同意他的修复。
尽快将这些日期时间值放入 DateTime 变量中,不要将它们视为字符串。即在网站上执行此操作,然后依靠例如 ADO.Net 将日期时间值正确编组到 SQL Server。更新存储过程以期望参数也作为日期时间 - 基本上,在处理过程中尽早停止将它们视为字符串。
这可能是安装操作系统的区域设置或链接到运行代码的用户帐户的区域设置的问题,因为不同的区域设置将您提供的格式的日期解释为DD/MM/YYYY
或者MM/DD/YYYY
解决这个问题的最好方法是使用规范的日期格式——要么YYYY-MM-DDTHH:MM:SS AM/PM
,YYYYMMDD HH:MM:SS AM/PM
要么YYYY-MM-DD HH:MM:SS(24h)