我有一个已经知道答案的感觉,但是您可以执行以下操作(最基本的示例)
DECLARE @interval varchar(2) = 'yy'
SELECT DATEDIFF(@interval, myDate, GETDATE())
我将单位(yy,mm或dd)放在一列中,并希望根据间隔通过其他列之一动态运行DATEDIFF。
答案 0 :(得分:3)
不能。您需要使用case
表达式:
select (case @interval
when 'year' then datediff(year, mydate, getdate())
when 'month' then datediff(month, mydate, getdate())
when 'day' then datediff(day, mydate, getdate())
end)
我应该说。您可以使用动态SQL,但这对于这种类型的计算通常不必要地复杂。
答案 1 :(得分:0)
select case @interval
when 'yy' then datediff(year, mydate, getdate()) end as 'YEAR'
case @interval
when 'mm' then datediff(month, mydate, getdate()) end as 'MONTH'
case @interval
when 'dy' then datediff(day, mydate, getdate())end as 'DAY'
请确保在“ Day”(日期)中没有像“ mm”(月份)这样的关键字“ dd” 参考https://www.w3schools.com/sql/func_sqlserver_datediff.asp