一起添加两个时间字段

时间:2018-01-04 08:42:14

标签: sql-server time casting

我的表中有两列,它们被设置为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而不是日期/时间?

2 个答案:

答案 0 :(得分: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 :(得分:1)

选择dateadd(second,datediff(second,0,time1),time2)作为Time3 来自your_table