解决方案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
*/