如何添加一小时的时间?

时间:2015-02-11 09:52:37

标签: sql-server stored-procedures time

我在编码时使用存储过程我觉得添加一小时的时间有些困难。我的意思是我已经预定义了时间,比如我的数据库中的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无效

3 个答案:

答案 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 (Transact-SQL)

  

返回指定的日期,并将指定的数字间隔(有符号整数)添加到该日期的指定日期部分。

     

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

您的存储过程代码存在其他问题,但您需要修复(例如未声明的变量,剩余逗号,逻辑)。