我想创建一个函数,它返回一个临时的日期表,用于生成报告.我希望能够动态指定表的间隔.下面是一个封装我的问题的函数.
考虑:
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
Run Code Online (Sandbox Code Playgroud)
有没有办法将"间隔"传递给这个函数?
(显然,我不是要重写DATEADD函数,我只是以此为例来突出我的问题).
干杯!
您不能将参数作为DATExxx函数的interval参数传递.最简单的方法可能是传递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
Run Code Online (Sandbox Code Playgroud)
个人喜好 - 我永远记不起可爱的缩写,我总是拼写出完整的间隔.
| 归档时间: |
|
| 查看次数: |
2181 次 |
| 最近记录: |