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