2016-10-21 19 views
1

私はFileNameという名前の列を持っていて、その列から日付列として日付を抽出したかったのです。ファイル名から日付を抽出する

ファイル名 M:私は、最も効率的に知りたいと思った\マッピング\ Workforce_Planning \ ABC \ ABClrmp.full.20160107.csv

望ましい結果

日 2016年1月7日

方法。

はそれがあなたのフォーマットであれば、これが最善の方法かもしれません事前に

答えて

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 
+0

私はエラーを取得する:文字列から日付/時刻を変換する際、変換に失敗しました。 Filename列はnvarchar(260)です。 – Djbril

+0

更新されたコードを確認してください –

+0

私はまだエラー – Djbril

2

をありがとう:

select cast(left(right(filename, 12), 8) as date) 
関連する問題