0

我有一个函数,其中包含以下代码:

DECLARE @requestedtime datetime,
    @Timeintervel int,
    @TotalTime datetime 

select @Timeintervel= datepart(MINUTE,l.Timeinterval)  
from Location_tbl l 
where l.LocName=@location

select @requestedtime= t.Paydate 
from Transaction_tbl t 
where t.TBarcode=@cardID

我正在尝试这样做:

  select @TotalTime=    DATEADD(MINUTE,@requestedtime,@Timeintervel)

...但它返回以下错误:

参数数据类型 datetime 对于 dateadd 函数的参数 2 无效。

输入参数:

  • @timeintervalue 15(15 分钟)
  • @requestedtime是 2013-05-07 17:55:42.000 我想添加两次。

我想得到总时间=2013-05-07 18:10:42.000

我怎么能得到那个?我必须使用什么功能?

4

2 回答 2

2

解决方案1:

注意:我看到您有带有 标记的问题SQL Server 2008

SQL2008+ 有TIME 数据类型。在这种情况下,我会使用这个解决方案:

DECLARE @RequestedTime TIME(0),
        @TimeIntervel TIME(0);

SELECT  @RequestedTime=CONVERT(TIME(0),'2013-07-20 00:25:00'),
        @TimeIntervel=CONVERT(TIME(0),'2013-07-25 10:10:10');

SELECT  @RequestedTime AS [@RequestedTime],
        @TimeIntervel AS [@TimeIntervel];

/*
@RequestedTime   @TimeIntervel
---------------- ----------------
00:25:00.0000000 10:10:10.0000000
*/

SELECT  DATEDIFF(SECOND,'00:00:00',@RequestedTime) AS ColDiff,
        DATEADD(SECOND,DATEDIFF(SECOND,'00:00:00',@RequestedTime),@TimeIntervel) AS ColFinalResult;

/*
ColDiff     ColFinalResult
----------- ----------------
1500        10:35:10.0000000
*/

警告 1:您需要Location_tbl表上的唯一索引(键:LocName),否则第一个查询是不确定的(对于 diff.query 执行,您可能会得到 diff.results),但数据未更改。

警告 2:您需要Transaction_tbl表上的唯一索引(键:TBarcode),否则第二个查询也是不确定的(对于差异查询执行,您可能会得到差异。结果)尽管数据未更改。

解决方案 2:如果您只需要将分钟添加到time值/变量中。

DECLARE @RequestedTime_Minute INT,
        @TimeIntervel TIME(0);

SELECT  @RequestedTime_Minute=DATEPART(MINUTE,'2013-07-20T00:25:00'),
        @TimeIntervel=CONVERT(TIME(0),'2013-07-25 10:10:10');

SELECT  @RequestedTime_Minute AS [@RequestedTime_Minute],
        @TimeIntervel AS [@TimeIntervel];

/*
@RequestedTime_Minute @TimeIntervel
--------------------- ----------------
25                    10:10:10.0000000
*/

SELECT  DATEADD(MINUTE,@RequestedTime_Minute,@TimeIntervel) AS ColRequestedResult;

/*
ColRequestedResult
------------------
10:35:10.0000000
*/
于 2013-07-25T09:44:38.620 回答
0

尝试使用以下函数将分钟添加到日期和时间:

DATEADD(MINUTE, @Timeintervel, @requestedtime)

如果您有任何疑问,请通过以下链接:

于 2013-07-25T09:49:20.317 回答