2012-04-11 189 views
0

我在sql date1 varchar(4)date2 varchar(4)中有两个字段。日期格式仅为HHmm,其中HH是小时,mm是分钟。在SQL中添加两个时间戳

无论如何,在SQL中我们可以将两个时间戳添加在一起并计算出多少小时和几分钟?

例如

date1 = 0230 date2 = 0145 will total 0415 
date1 = 0030 date2 = 0035 will total 0105 
+1

仅供参考,指定DBMS问题标签并不是一个坏主意。 – 2012-04-11 23:30:51

+0

对不起,没有看到你可以在编辑中添加额外的标签 – fes 2012-04-11 23:32:59

回答

2
declare @d1 varchar(4), @d2 varchar(4), @dif int 

set @d1 = '0230' 
set @d2 = '0145' 

set @dif = (CAST(left(@d1, 2) as int) * 60) + (CAST(left(@d2, 2) as int) * 60) + CAST(right(@d1, 2) as int) + CAST(right(@d2, 2) as int) 

select RIGHT('00' + cast(floor(@dif/60) as varchar), 2) + RIGHT('00' + CAST(@dif % 60 as varchar),2) 
+0

谢谢这正是我想要的。要走子串路线,但左右是完美的。 – fes 2012-04-12 00:21:59

0

不确定这些是否真的是时间戳,什么不把它们存储为整数?

无论如何..不知道有一个这样的mysql函数。 你可以浏览:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html 不知道它会提供很多帮助。 如果您将它们存储为秒,那么您可以简单地将它们添加到它们中,否则将它们拖入脚本中,将它们转换为秒,将它们添加在一起,然后根据需要转换为更易读的格式。

+0

OP不使用mysql。 – 2012-04-11 23:33:34

+0

布拉德它的遗产,因此我只需要能够做操纵。我想我可能只需要使用子字符串,并拆分小时和分钟,然后工作 – fes 2012-04-11 23:34:17

0

试试这个(使用时间或日期时间):

select ADDTIME(time1,time2); 

在MySQL的时间是形式的

'01:02:03' 

和日期时间

'2003-12-31 01:02:03' 
+0

OP不使用MySQL。 – 2012-04-11 23:33:56

0

如果你碰巧在使用SQL Server时,您也可以使用此处所述的DATEDIFF功能:http://msdn.microsoft.com/en-us/library/ms189794.aspx

这将让你得到日期时间值的任何部分之间的差异。根据你想要如何处理它,DATEADD也可以用于此。

+0

OP具有'varchar'值。不'日期时间' – 2012-04-11 23:34:20