我在编码时使用存储过程我觉得添加一小时的时间有些困难。我的意思是我已经预定义了时间,比如我的数据库中的08:00,现在我想要添加4个这个时间和我想要得到结果为12:00。我怎么能实现它?我试过的方法如下,
ALTER PROCEDURE [dbo].[AttandenceEdit1](
@machid numeric(18,0),
)
AS
declare @time as time(0),@castedtime as time(0),
set @timein1=(select convert(time(0), from ShiftType where machId=@machid )// Value=08:00
print @time
set @addvalue =(DATEADD(HH,@timein1,4))
print @addvalue
我想要结果08:00 + 4 = 12:00 现在它显示错误,如参数数据类型时间对于dateadd函数的参数2无效
答案 0 :(得分:1)
尝试更改DATEADD()函数语法,如下所示:
set @addvalue =(DATEADD(HH,4,@timein1))
答案 1 :(得分:1)
您提供的代码中似乎存在许多问题,例如@timein1
和@addvalue
未声明。
所以这是一个简单的例子:
DECLARE @time AS TIME = '08:00:00'
SELECT @time AS OriginalTime,
DATEADD(HOUR, 4, @time) TimePlus4Hours
产地:
OriginalTime | TimePlus4Hours
====================================
08:00:00.0000000 | 12:00:00.0000000
参考:
返回指定的日期,并将指定的数字间隔(有符号整数)添加到该日期的指定日期部分。
DATEADD(datepart,number,date)
答案 2 :(得分:1)
你有关于dateadd的参数的顺序错误。这样:
declare @time as time(0)
set @time='08:00'
print @time
declare @addvalue time(0)
set @addvalue =(DATEADD(HOUR, 4, @time))
print @addvalue
将导致:
08:00:00
12:00:00
您的存储过程代码存在其他问题,但您需要修复(例如未声明的变量,剩余逗号,逻辑)。