我有两个varchar(30),startDate和endDate coloumn,它有日期值,也有该coloumn中的空值。我想比较sql server 2005/2008中的日期范围。喜欢
WHERE e2.type=1
AND coloumn1 between convert(datetime,startDate,101) and convert(datetime,endDate,101)
当我尝试执行它时会给我一个错误 将varchar数据类型转换为日期时间数据类型会导致超出范围的值。
答案 0 :(得分:1)
该错误消息表明存储在varchar中的值无法(通过SQL)转换为日期时间。您需要深入查看数据并找到问题行,这可能是一件棘手的事情。从以下内容开始:
SELECT StartDate, isdate(StartDate)
from MyTable
where StartDate is not null
and isdate(StartDate) = 0
......和EndDate一样。你将不得不玩这个,因为字符串到目前的转换可能会很快变得棘手。 (不用说,将日期时间值存储为日期时间值会更好。如果您可以更改表格结构,请执行此操作!)