我试图合并两个不同的表,包括旧票和新票。要使视图中的所有值保持一致,我需要更改此类型的值:
" 44天,5:07:01"
要:
" 44:5:07:01"
它们都存储为varchars。它们基本上是两个日期之间的差异。
此外,当日期之间的差异不包括"天"然后差异显示为
" 5:07:01"
我需要转换为
" 00:05:07:01"
知道该怎么做吗?
答案 0 :(得分:1)
这解决了这两个问题:
select (case when val like '% days, %'
then left(val, charindex(' ', val)) + ':' + ltrim(right(val, 8))
when val like '_:%'
then '00:0' + val
else '00:' + val
end)
与SQL Server中的许多字符串格式化一样,这是非常特别的。代码不是特别灵活,但它确实解决了问题格式的问题。
答案 1 :(得分:1)
另一个选项
Declare @YourTable table (YourCol varchar(50))
Insert Into @YourTable values
('44 days, 5:07:01'),
('4 days, 5:07:01'),
('5:07:01')
Select right(IIF(charindex(' d',YourCol)=0,'00',rtrim(left('0'+YourCol,3))),2)
+':'+right('0'+replace(' '+YourCol,' ','0'),8)
From @YourTable
<强>返回强>
(No column name)
44:05:07:01
04:05:07:01
00:05:07:01