首页 > 解决方案 > 你能把一个变量传递给 DATEDIFF 的区间吗

问题描述

我有一种感觉,我已经知道答案,但你能做到以下(最基本的例子)

DECLARE @interval varchar(2) = 'yy'

SELECT DATEDIFF(@interval, myDate, GETDATE())

我将单位(yy、mm 或 dd)放在一列中,并希望根据其他列之一动态运行 DATEDIFF,通过间隔。

标签: sqlsql-serverssmsdatediff

解决方案


你不能。你需要使用一个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,但对于这种类型的计算来说,这通常是不必要的复杂。


推荐阅读