我在查询中遇到这种情况:
WHERE fielddate> = '2010-10-01 'AND fielddate <= '2010-10-18'
使用相同的引擎数据库(sqlserver-2005 Express)将数据库迁移到另一台服务器(2008),返回错误:
将char数据类型转换为 日期时间数据类型导致 超出范围的日期时间值。
但是,如果我使这个查询工作
WHERE fielddate> = '20101001 'AND fielddate <= '20101018'
整理类型是相同的:
Modern_Spanish_CI_AS
我看到的所有其他功能都是一样的。
我不知道问题是什么
感谢。
答案 0 :(得分:1)
检查服务器的语言环境,但您也可以使用CONVERT并指定日期格式:)
http://msdn.microsoft.com/en-us/library/aa226054(SQL.80).aspx
答案 1 :(得分:0)
解释这些不明确的日期格式的方式取决于登录的默认语言。据推测,您在一个实例中的登录语言与另一个实例中的语言不同。
最好避免使用这些含糊不清的格式。
答案 2 :(得分:-1)
问题源于您的数据存储在字符字段而不是日期时间字段中。特别是因为不同的排序规则会以不同的方式写入/读取字符字段。
进行更改
我的第一个建议是将字段的数据类型更改为DateTime。由于您要使用全新的SQL 2008数据库,因此您可能希望利用并将以字符格式存储的任何日期更改为实际的DateTime
CAST和CONVERT
您可以使用CAST
显式转换字段,如
WHERE 1=1
AND CAST (fielddate AS DATETIME) >= '2010-10-01 'AND
CAST (fielddate AS DATETIME) <= '2010-10-18'