我有一个名为FileName的列,我希望从列中提取日期作为日期列。
文件名 M:\映射\ Workforce_Planning \ ABC \ ABClrmp.full.20160107.csv
期望的结果
日期 2016年1月7日
我想知道最有效的方式。
提前谢谢
答案 0 :(得分:2)
如果这是您的格式,那么这可能是最好的方式:
select cast(left(right(filename, 12), 8) as date)
答案 1 :(得分:0)
尝试以下查询:即使文件名已更改..它将返回正确的输出。
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