如何在sql server中的动态sql查询中传递日期函数

时间:2012-07-11 14:35:35

标签: sql-server

SELECT @sql='

select 
    *
from (
    select ''Ongoing'' AS Ongoing,
    Coalesce(COUNT(project),0) AS project, Coalesce(COUNT(year(u.PlannedStartDate)),0) as [y]
    from Projects u  WHERE 
    u.actualstartdate IS  NULL 
    AND u.Startdate < ''+GETDATE()+''
    AND ID ='''+@ID+'''  

  ) Data
PIVOT (
  COUNT(project)
  FOR [y]
  IN (
    ' + @Years + '
  )
) PivotTable
'

在这里,我想通过cur日期,但它不起作用.. 这是因为GETDATE()的值不在字符串

3 个答案:

答案 0 :(得分:2)

AND u.Startdate < ''+GETDATE()+''更改为AND u.Startdate < GETDATE()

答案 1 :(得分:1)

只要删除它周围的引号我会想

SELECT @sql='

select * from ( select ''Ongoing'' AS Ongoing, Coalesce(COUNT(project),0) AS project,
Coalesce(COUNT(year(u.PlannedStartDate)),0) as [y] from Projects u 
WHERE u.actualstartdate IS   NULL AND u.Startdate < GETDATE() AND ID ='''+@ID+'''

) Data PIVOT ( COUNT(project) FOR [y] IN ( ' + @Years + ' ) ) PivotTable '

答案 2 :(得分:0)

尝试将GETDATE()强制转换为这样的varchar:CAST(GETDATE()AS varchar)