Sql server 如何增加一小时的时间?

Sql server 如何增加一小时的时间?,sql-server,stored-procedures,time,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=(se

我在编写代码时使用存储过程,我觉得在一个时间中添加一个小时有些困难。我的意思是,我的数据库中已经有一个预定义的时间,如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
现在显示错误,如参数数据类型time对于dateadd函数的参数2无效

  set @addvalue =(DATEADD(HH,4,@timein1))

尝试更改DATEADD()函数语法,如下所示:

  set @addvalue =(DATEADD(HH,4,@timein1))

尝试更改DATEADD()函数语法,如下所示:

  set @addvalue =(DATEADD(HH,4,@timein1))

尝试更改DATEADD()函数语法,如下所示:

  set @addvalue =(DATEADD(HH,4,@timein1))

您提供的代码中似乎存在一系列问题,例如未声明
@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(日期部分、编号、日期)


您提供的代码中似乎存在一系列问题,例如未声明
@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(日期部分、编号、日期)


您提供的代码中似乎存在一系列问题,例如未声明
@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(日期部分、编号、日期)


您提供的代码中似乎存在一系列问题,例如未声明
@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(日期部分、编号、日期)


您要添加的参数顺序错误。这:

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

存储的过程代码还有其他问题需要解决(如未声明的变量、多余的逗号、逻辑)。

要添加的参数顺序错误。这:

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

存储的过程代码还有其他问题需要解决(如未声明的变量、多余的逗号、逻辑)。

要添加的参数顺序错误。这:

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

存储的过程代码还有其他问题需要解决(如未声明的变量、多余的逗号、逻辑)。

要添加的参数顺序错误。这:

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

存储的过程代码还有其他问题需要解决(如未声明的变量、多余的逗号、逻辑)。

DateAdd()函数的最后一个参数是日期,第二个参数是数字。例如,尝试将@timein1与4切换,看看是否有帮助。只需对set@addvalue=(DATEADD(HH,cast(@timein1 AS INT),4))@mohan111进行转换,不允许将数据类型time显式转换为INT。DATEADD()函数的最后一个参数是日期,第二个参数是数字。例如,尝试将@timein1与4切换,看看是否有帮助。只需对set@addvalue=(DATEADD(HH,cast(@timein1 AS INT),4))@mohan111进行转换,不允许将数据类型time显式转换为INT。DATEADD()函数的最后一个参数是日期,第二个参数是数字。例如,尝试将@timein1与4切换,看看是否有帮助。只需对set@addvalue=(DATEADD(HH,cast(@timein1 AS INT),4))@mohan111进行转换,不允许将数据类型time显式转换为INT。DATEADD()函数的最后一个参数是日期,第二个参数是数字。例如,尝试将@timein1与4切换,看看是否有帮助。只需对set@addvalue=(DATEADD(HH,cast(@timein1 AS INT),4))@mohan111进行转换,不允许将数据类型time显式转换为INT。