2011-08-15 156 views
1

我有两个varchar(30),startDate和endDate coloumn,它有日期值,也在该coloumn空值。我想比较sql server 2005/2008中的日期范围。成才像如何比较日期范围varchar coloumn

WHERE e2.type=1 
    AND coloumn1 between convert(datetime,startDate,101) and convert(datetime,endDate,101) 

当我尝试执行它给我一个错误 varchar数据类型为日期时间数据类型的转换导致外的范围内的值。

回答

1

该错误消息表示存储在varchar中的值无法通过SQL转换为日期时间。您需要深入了解数据并找到问题行,这可能是一件棘手的事情。开始是这样的:

SELECT StartDate, isdate(StartDate) 
from MyTable 
where StartDate is not null 
    and isdate(StartDate) = 0 

...和相同的结束日期。你将不得不玩这个,因为字符串到最新的转换可能会变得非常棘手。 (不用说,将日期时间值存储为日期时间值会更好,如果您可以更改表格结构,请这么做!)