2016-09-15 11 views
0

フラットファイルを解析してテーブルに挿入した後、フラットファイルを受け取っています。 Iここでフォーマットの日付YYYYMMDDHHMMSS文字列をDatetimeに変換する

を持つ列をしました、YYYYは年、MMミリメートルは分、HHは時間である、DDは日、月、 SSは、秒の部分の下に言及したが、

0123私のために働いていないように私はのDateTime型にこれを変換しようとしている

です例えば

は: 列はVarchar形式で値20150121190941を持っており、それが2015年1月21日19としてDateTimeに変換する必要があります:09:41.000

それは重複一つだ場合、私はお詫び申し上げます。

+0

サンプルと期待される出力データを提供します。 – Susang

+0

どのように解析しますか?あなたはそれを変換して、 'DateTime'として挿入しますか? F.e. C#:DateTime dt = DateTime.ParseExact( "20150121190941"、 "yyyyMMddHHmmss"、CultureInfo.InvariantCulture); ' –

+0

これは私の質問です。その文字列を 'DateTime'型の列に挿入します。これは 'NVARCHAR(20)'から 'DateTime'に変換した後にのみ可能です。 –

答えて

0

あなたが選択DATETIMEFROMPARTS(年、月、日、時、分、秒、ミリ秒)

declare @dt nvarchar(25) = '20150121190941' 

select datetimefromparts(left(@dt,4), substring(@dt,5,2), substring(@dt,7,2),substring(@dt,9,2), substring(@dt,11,2), substring(@dt,13,2), '000') 
+0

ありがとうございますが、私は時間の部分も持っています –

+0

はいdatetimefrompartsを使用してください。時間がつきます –

0

を使用することができますSQL Serverが容易に日付としてYYYYMMDDを認識しています。したがって、最初の8文字を日付に変換するのは簡単です。悲しいかな、私はコロンが付いていない時間表現があるとは思わない。

だから、ここ1つのかなり残忍な方法である:

select (convert(datetime, left(StrDate, 8)) + 
     convert(time, substring(StrDate, 9, 2) + ':' + substring(StrDate, 11, 2) + ':' + substring(StrDate, 13, 2) 
       ) 
     ) 
0

宣言@dtのVARCHAR(50) セットする@ DT = 20150121190941

テーブルtblDateTbl ( COL1日時 ) INSERT INTOを作成dt(col1) SUBSTRING(@ dt、1,4)+ ' - ' + SUBSTRING(@ dt、5,2)+ ' - ' + SUBSTRING(@ dt、7,2)+ 'SUBSTRING dt、9,2)+ ':' + SUBSTRING(@ dt、11,2)+ ':' + SUBSTRING(@ dt、13,2)+ '.000'

+0

サンプルデータを提供したばかりなので、@ dtをカラム名に置き換えてupdate文を使用する必要があります。 – Poonam

関連する問題