我的数据列中包含诸如4w4d,1w0d,2w5d,0w6d之类的值。
我该如何使用这些数据来获取天数?
Create Table #temp
(
Data char(4),
ExpectedResult int
)
insert into #temp
(
Data,
ExpectedResult
)
select '4w4d','32'
union all
select '1w0d','7'
union all
select '2w5d','19'
union all
select '0w6d','6'
union all
select '0w5d','5'
union all
select '0w1d','1'
union all
select '0w3d','3'
union all
select '1w6d','13'
答案 0 :(得分:2)
您需要解析星期部分和日期部分,然后转换为天数。以下是执行此操作的一种方法:
-- Find the weeks, multiple by 7
convert(int, substring([Data], 1, charindex('w',[Data])-1))*7
-- Find the days and add on
+ convert(int, substring([Data], charindex('w',[Data])+1, charindex('d',[Data])-charindex('w',[Data])-1))
答案 1 :(得分:1)
您可以使用字符串操作来解析字符串:
select convert(int, left(data, 1)) * 7 + convert(int, substring(data, 3, 1))
Here是db <>带有示例数据的小提琴。