从文件名中提取日期
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
我有一个名为 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