将字符串值转换为天数

时间:2019-05-10 02:16:36

标签: sql sql-server tsql

我的数据列中包含诸如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'

2 个答案:

答案 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 <>带有示例数据的小提琴。