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

Tsql 如何比较varchar列中的日期范围,tsql,datetime,Tsql,Datetime,我有两个varchar(30),startDate和endDate列,它有dates值,并且该列中也有null。我想比较sql server 2005/2008中的日期范围。差不多 WHERE e2.type=1 AND coloumn1 between convert(datetime,startDate,101) and convert(datetime,endDate,101) 当我尝试执行时,它会给我一个错误 将varchar数据类型转换为datetime数据类型导致值超出范围

我有两个varchar(30),startDate和endDate列,它有dates值,并且该列中也有null。我想比较sql server 2005/2008中的日期范围。差不多

WHERE e2.type=1
   AND coloumn1 between convert(datetime,startDate,101) and convert(datetime,endDate,101)
当我尝试执行时,它会给我一个错误
将varchar数据类型转换为datetime数据类型导致值超出范围

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

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

…EndDate也是一样。您将不得不处理这个问题,因为字符串到日期的转换可能会很快变得棘手。(不用说,最好将datetime值存储为datetime值。如果可以更改表结构,请这样做!)

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

SELECT StartDate, isdate(StartDate)
 from MyTable
 where StartDate is not null
  and isdate(StartDate) = 0
…EndDate也是一样。您将不得不处理这个问题,因为字符串到日期的转换可能会很快变得棘手。(不用说,最好将日期时间值存储为日期时间值。如果可以更改表结构,请这样做!)