一起添加两个时间字段

问题描述 投票:0回答:2

我的表中有两列,它们被设置为nvarchar字段,但包含时间值。一列是时间字段,一列是持续时间字段,例如。

Time 1 = 15:05:22  (time field)
Time 2 = 00:02:00   (duration field)

我想输出时间1 +时间2 = 15:07:22

我尝试了CAST(time1 as datetime)+CAST(time2 as datetime),但我得到1900-01-01 15:07:22.000,我不想要日期部分。我不能使用cast作为时间,因为我得到一个错误我认为这是因为字段设置为nvarchar而不是日期/时间?

sql-server time casting
2个回答
2
投票

只需将结果转换为time即可删除日期部分:

DECLARE @time_txt varchar(8);
DECLARE @duration_txt varchar(8);
SET @time_txt = '15:05:22';
SET @duration_txt = '00:02:00';

SELECT CAST(CAST(@time_txt as datetime) + CAST(@duration_txt as datetime) as time);

-- yields the time value 15:07:22.0000000

如果您需要将其作为字符串(例如,以hh:mm:ss格式),则可以使用CONVERT和相应的格式选项:

...

SELECT CONVERT(varchar(8), CAST(@time_txt as datetime) + CAST(@duration_txt as datetime), 108);

-- yields the string 15:07:22

PS:一般来说,你应该使用time列来代替time列而不是varchar列。不幸的是,SQL Server在持续时间(时间跨度)方面没有非常好的数据类型。


1
投票

从your_table中选择dateadd(second,datediff(second,0,time1),time2)作为Time3

© www.soinside.com 2019 - 2024. All rights reserved.