SQL Server:将字符串'n','hh','d'转换为全局变量n,hh和d

时间:2016-12-27 08:18:50

标签: sql sql-server date datetime dateadd

我们正在使用一个名为Instant Developer的高级框架,其中Date Parts实现为字符串。实现一个接口,我从我的项目的库中添加了SQL Server的函数ip_address。但是当我调用它时,生成的代码就是

DATEADD (datepart , number , date )

但由于SELECT dateadd('n',90,CONVERT(datetime, DATEREQUEST+TIMEREQUEST)) FROM [Ergo].[dbo].[MANUTENZIONI] where TICKETMANUTE = 17723 函数的第一个参数不正确,因此SQL Server上升轴异常,因为它不应该是字符串而是全局变量。有没有办法转换它?类似的东西:

dateadd()

1 个答案:

答案 0 :(得分:2)

创建一个包装函数,它接受varchar作为一种间隔

create function myDateadd(@type varchar(5), @amount int, @dt datetime)
returns datetime
as
begin
return case @type
       when 'n' then dateadd(n, @amount, @dt)
       when 'd' then dateadd(d, @amount, @dt)
       -- ...
       end;
end
go

select dbo.myDateadd('n',60,getdate());