如何给时间加上一个小时?

How to add an hour to time?

我在编码时使用存储过程我觉得在 time.I 上增加一个小时有些困难意味着我已经在我的数据库中预定义了时间 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 现在它显示错误 Argument data type time is invalid for argument 2 of dateadd function

尝试像这样更改 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 (Transact-SQL)

Returns a specified date with the specified number interval (signed integer) added to a specified datepart of that date.

DATEADD (datepart , number , date )

您的 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

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