加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

使用DateDiff时的SQL Dynamic DatePart

发布时间:2020-12-12 16:43:03 所属栏目:MsSql教程 来源:网络整理
导读:有没有办法将DateDiff的DatePart参数作为变量传递? 所以我可以编写类似这样的代码? DECLARE @datePart VARCHAR(2)DECLARE @dateParameter INTSELECT @datePart = 'dd'SELECT @dateParameter = 28SELECT *FROM MyTableWHERE DATEDIFF(@datePart,MyTable.MyDa
有没有办法将DateDiff的DatePart参数作为变量传递?
所以我可以编写类似这样的代码?
DECLARE @datePart VARCHAR(2)
DECLARE @dateParameter INT

SELECT @datePart = 'dd'
SELECT @dateParameter = 28

SELECT
    *
FROM
    MyTable
WHERE
    DATEDIFF(@datePart,MyTable.MyDate,GETDATE()) < @dateParameter

我可以想到这样做的唯一方法是使用CASE语句检查参数的值,或者通过将SQL作为字符串构建并在EXEC中运行.

有没有人有任何“更好的”建议?该平台是MS SQL Server 2005

解决方法

根据SQL Server 2005的 DATEDIFF(参数部分)上的BOL条目,

These dateparts and abbreviations cannot be supplied as a user-declared variable.

所以你可能会坚持使用动态SQL或使用CASE语句.但是我会选择一个CASE版本而不是动态SQL.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读