请帮我查一下我的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。
答案 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函数计算的最后日期的所有时间