T-SQL:提取子字符串

时间:2014-04-11 21:24:19

标签: tsql

我必须从varchar列中读取日期,其中包含以下可能的模式(月/日/年):

1/1/2005 
1/13/2005 
10/9/2005 
10/13/2005

使用T-SQL读取这些日期的日期部分的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

转换到日期并使用day()将是正确的方法imo:

declare @t table (string varchar(10))
insert @t values ('1/1/2005'),('1/13/2005'),('10/9/2005'),('10/13/2005')
select day(cast(string as date)) as the_day from @t

会给:

the_day
-----------
1
13
9
13

如果您想避免投射,另一种方法是使用substringcharindex函数:

select 
    substring(
      string, 
      charindex('/', string)+1, 
      charindex('/', string, charindex('/', string)+1)-charindex('/', string)-1
    ) 
from @t