【问题标题】:how to compare date range in a varchar coloumn如何比较 varchar 列中的日期范围
【发布时间】:2011-08-16 01:51:38
【问题描述】:

我有两个 varchar(30),startDate 和 endDate 列,它有日期值,并且该列中有空值。我想比较 sql server 2005/2008 中的日期范围。有点像

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

当我尝试执行时,它给了我一个错误 将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。

【问题讨论】:

    标签: tsql datetime


    【解决方案1】:

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

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

    ...EndDate 也是如此。您将不得不玩弄这个,因为字符串到日期的转换可能会很快变得棘手。 (不用说,将日期时间值存储为日期时间值会更好。如果可以更改表结构,请这样做!)

    【讨论】:

      猜你喜欢
      • 2013-01-05
      • 2010-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-19
      相关资源
      最近更新 更多