从文件名中提取日期

Extract Date from a file name

我有一个名为 FileName 的列,我想从该列中提取日期作为日期列。

文件名 M:\Mapping\Workforce_Planning\ABC\ABClrmp.满.20160107.csv

期望的结果

日期 2016-01-07

我想知道最有效的方法。

提前致谢

如果这是您的格式,那么这可能是最好的方法:

select cast(left(right(filename, 12), 8) as date)

尝试以下查询:即使更改了文件名..它也会 return 正确输出。

            select cast(SUBSTRING(filename,(PATINDEX('%[0-9]%',filename)),8) as DATE) 

            select CONVERT(datetime, cast(SUBSTRING(filename,(PATINDEX('%[0-9]%',filename)),8) as DATE), 103)

示例代码:

            CREATE TABLE #tmpTable(id INT, FileName  nvarchar(250))
            INSERT INTO #tmpTable values
            (1, 'M:\Mapping\Workforce_Planning\ABC\ABClrmp.full.20160107.csv'),
            (2, 'M:\Mapping\.20160207.csv')

            select cast(SUBSTRING(filename,(PATINDEX('%[0-9]%',filename)),8) as DATE) from #tmpTable

            -- Or
            select CONVERT(datetime, cast(SUBSTRING(filename,(PATINDEX('%[0-9]%',filename)),8) as DATE), 103)
            from #tmpTable