sql-server - SQL Server - 如何使用 DATEADD 列中的数据 - datepart
问题描述
使用 DATEADD 函数时,我想将来自变量/表列的数据作为“日期部分”传递。下面是我的代码片段,我看到如下错误。
DECLARE @vchstring VARCHAR(20)
SET @vchstring='month'
SELECT DATEADD(@vchstring,1,GETDATE())
我收到此错误:
消息 1023,级别 15,状态 1,行 104
为 dateadd 指定的参数 1 无效。
这可能是重复的,但我无法找到任何信息。
解决方案
SQL Server 不支持宏替换。您将不得不使用动态 SQL 或嵌套 case/IF 甚至 SELECT
例子
DECLARE @vchstring VARCHAR(20)
SET @vchstring='month'
Select Value
From ( values ('year' ,DATEADD(YEAR ,1,GETDATE()) )
,('month' ,DATEADD(MONTH ,1,GETDATE()) )
,('day' ,DATEADD(DAY ,1,GETDATE()) )
,('hour' ,DATEADD(HOUR ,1,GETDATE()) )
,('minute',DATEADD(MINUTE ,1,GETDATE()) )
) A (inc,value)
Where inc = @vchstring
退货
Value
2020-06-05 10:09:29.660
推荐阅读
- php - mysqli 两个日期之间的总和
- javascript - js卡验证而不转换为字符串或数组
- ms-access - 粘贴时锁定表顺序
- javascript - 使用 Material Design 中的标签栏 html/css/js
- php - 如何解决带有此类错误的 PHP:警告:未知:无法打开流:第 0 行的未知中没有此类文件或目录
- docker - 将简单的docker compose连接到nginx?
- mongodb - 如何在 MongoClient for VertX 中正确处理异常
- python - 在 python 中处理大型文本文件
- c++ - 错误:不能通过'...'传递非平凡可复制类型'class boost::filesystem::path'的对象
- scala - Scala 和 Avro:io.confluent 模式注册问题