sql - 你能把一个变量传递给 DATEDIFF 的区间吗
问题描述
我有一种感觉,我已经知道答案,但你能做到以下(最基本的例子)
DECLARE @interval varchar(2) = 'yy'
SELECT DATEDIFF(@interval, myDate, GETDATE())
我将单位(yy、mm 或 dd)放在一列中,并希望根据其他列之一动态运行 DATEDIFF,通过间隔。
解决方案
你不能。你需要使用一个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,但对于这种类型的计算来说,这通常是不必要的复杂。
推荐阅读
- python - 迭代中的最后一个值被保存在 python 中
- owl-carousel - 猫头鹰旋转木马没有显示
- go - 给定代码的执行流程将如何?还有 go-routines 将如何在这里执行?
- php - soapCall 不返回任何值
- asp.net-core - 将应用程序从 netcore 2 更新到 3 不能使用 automapper
- git - Jenkins 多分支管道:如何获取最新的 git 标签?
- algorithm - 在 2D 矩阵中找到最大的棋盘面
- javascript - 使用烧瓶将数据从数据库检索到 html
- python - 如何在它们之间距离最大的n个点中获得m对点
- excel - 具有 xltextformat 的 Excel VBA 文本到列