如何比较varchar列中的日期范围

时间:2011-08-15 17:18:51

标签: tsql datetime

我有两个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数据类型转换为日期时间数据类型会导致超出范围的值。

1 个答案:

答案 0 :(得分:1)

该错误消息表明存储在varchar中的值无法(通过SQL)转换为日期时间。您需要深入查看数据并找到问题行,这可能是一件棘手的事情。从以下内容开始:

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

......和EndDate一样。你将不得不玩这个,因为字符串到目前的转换可能会很快变得棘手。 (不用说,将日期时间值存储为日期时间值会更好。如果您可以更改表格结构,请执行此操作!)