请告诉我我的日期比较sql查询中的错误是什么

时间:2010-04-05 04:54:05

标签: sql sql-server

请帮我查一下我的SQL查询中的错误。我创建了此查询以比较日期

select * from Joinplans jp
where cast(convert(varchar,GETDATE(),103) AS  datetime) BETWEEN    
    CASE(convert(varchar,jp.planstartDate,103) AS datetime) AND
    CASE(convert(varchar,DATEADD(DAY,jp.planDays,jp.planstartDate),103) AS DATETIME)

它给了我错误:

  

在'AS'附近不正确

我正在使用SQL Server 2005。

2 个答案:

答案 0 :(得分:3)

您在两个实例中写了case而不是cast

答案 1 :(得分:1)

如果planStartDate实际上是一个日期,则无需将其强制转换为字符列:

Select ...
From Joinplans jp 
where GetDate() Between planStartDate And DateAdd(day, jp.planDays, jp.planStartDate)

现在,如果planStartDate存储日期和时间数据,那么您可能希望使用类似的内容:

Select ...
From Joinplans jp 
Where planStartDate <= GetDate()  
    And GetDate() < DateAdd(day, jp.planDays + 1, jp.planStartDate)

这确保包含通过DateAdd函数计算的最后日期的所有时间

相关问题