Spo*_*ght 1 t-sql sql-server datepart
我正在创建一个基于当前周进行大量过滤的SQL Server存储过程.我传递的是一个日期并使用Datepart()过滤掉一周,而不是传递一个开始和结束日期.
Where DATEPART(WEEK, cd.TurninDate) = DATEPART(WEEK, @StartDate)
and DATEPART(YEAR, cd.TurninDate) = DATEPART(YEAR, @StartDate)
Run Code Online (Sandbox Code Playgroud)
尝试顶级主动,我可以看到经理要求每月或每季度以及每周运行.如果我能帮助它,我宁愿没有为每个版本存储过程.我想传递频率和日期,但它似乎不起作用.
我试过了:
Where DATEPART(@Freq, cd.TurninDate) = DATEPART(@Freq, @StartDate)
and DATEPART(YEAR, cd.TurninDate) = DATEPART(YEAR, @StartDate)
Run Code Online (Sandbox Code Playgroud)
但我得到@Freq错误未被识别为间隔.
有谁知道我能解决这个问题的方法吗?
没有办法使用变量,但你可以解决它:
case
when @part = 'YEAR' THEN DATEPART(YEAR, cd.TurninDate)
when @part = 'WEEK' THEN DATEPART(WEEK, cd.TurninDate)
...
END
Run Code Online (Sandbox Code Playgroud)
您可以看到SQL/T-SQL语言的设计缺乏.
| 归档时间: |
|
| 查看次数: |
2787 次 |
| 最近记录: |