Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将间隔参数传递给SQL中的函数_Sql Server - Fatal编程技术网

Sql server 将间隔参数传递给SQL中的函数

Sql server 将间隔参数传递给SQL中的函数,sql-server,Sql Server,我想创建一个函数,返回一个临时日期表,用于生成报告。我希望能够动态地指定表的间隔。下面是一个封装我的问题的函数 考虑: CREATE FUNCTION [dbo].[DateAdder] (@DateStart datetime, @increment int, @interval ?????) Returns datetime AS BEGIN Declare @Return datetime SELECT @Return = DATEADD(@interval, @increment, @D

我想创建一个函数,返回一个临时日期表,用于生成报告。我希望能够动态地指定表的间隔。下面是一个封装我的问题的函数

考虑:

CREATE FUNCTION [dbo].[DateAdder]
(@DateStart datetime,
@increment int,
@interval ?????)
Returns datetime
AS
BEGIN
Declare @Return datetime
SELECT @Return = DATEADD(@interval, @increment, @DateStart)
return @Return
END
有没有办法将“间隔”传递给此函数

(显然,我并不是想重写
DATEADD
函数,我只是用这个例子来强调我的问题)


干杯

不能将参数作为DATExxx函数的间隔参数传递。最简单的方法可能是传递一个varchar,然后在CASE语句中复制DATExxx函数。例如:

SELECT @Return = CASE @interval
     WHEN 'month' THEN DATEADD(month, @increment, @DateStart)
     WHEN 'week' THEN DATEADD(week, @increment, @DateStart)
     WHEN 'day' THEN DATEADD(day, @increment, @DateStart)
         END
个人偏好——我永远记不起那些可爱的缩写,我总是把间隔完整地拼出来