2016-09-15 12 views
0

Ich habe eine flache Datei erhalten und nach dem Parsen und Einfügen in eine Tabelle. Ich habe eine Spalte, die Daten in einem Format YYYYMMDDHHMMSSZeichenfolge in Datetime konvertieren

Hier hat yyyy Jahr, MM Monat, dd ist Tag, hh Stunden, mm ist Minute und ss ist Sekunden Teil

ich versuche, diese Art zu Datetime zu konvertieren, wie unten erwähnt, aber nicht für mich arbeiten

SELECT CAST(StrDate as DateTime) FROM [dbo].[Mytable] 

Zum Beispiel: Spalt einen Wert 20150121190941 in Varchar Format und es sollte als 2015.01.21 19-DateTime umgewandelt werden: 09: 41,000

Ich entschuldige mich, wenn es ein Duplikat ein.

+0

Geben Sie Beispiele und erwartete Ausgabedaten dafür an. – Susang

+0

Wie parsen Sie es? Kannst du es dort konvertieren und es als 'DateTime' einfügen? F. e. mit C#: 'DateTime dt = DateTime.ParseExact (" 20150121190941 "," yyyyMMddHHmmss ", CultureInfo.InvariantCulture);' –

+0

Das ist meine Frage. Ich möchte, dass diese Zeichenfolge in eine Spalte vom Typ "DateTime" eingefügt wird. Dies ist nur nach der Konvertierung von 'NVARCHAR (20)' nach 'DateTime' möglich. –

Antwort

0

können Sie wählen DATETIMEFROMPARTS verwenden (Jahr, Monat, Tag, Stunde, Minute, Sekunde, Millisekunden)

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

Danke, aber ich brauche Zeit Teil auch –

+0

Ja verwenden datetimefromparts .. die geben mit der Zeit –

0

SQL Server erkennt leicht YYYYMMDD als Datum. So ist es einfach, die ersten 8 Zeichen in ein Datum zu konvertieren. Ach, ich glaube nicht, dass es eine Zeitdarstellung ohne Doppelpunkte gibt.

So, hier ist eine ziemlich brutale Methode:

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

Declare @dt varchar (50) Satz @ dt = 20150121190941

Tabelle erstellen tblDateTbl ( col1 Datetime ) Einsatz in dt (col1) Wählen Sie SUBSTRING (@ dt, 1,4) + '-' + SUBSTRING (@ dt, 5,2) + '-' + SUBSTRING (@ dt, 7,2) + '' + SUBSTRING (@ dt, 9,2) + ':' + SUBSTRING (@ dt, 11,2) + ':' + SUBSTRING (@ dt, 13,2) + '0,000'

+0

Ich habe nur Beispieldaten zur Verfügung gestellt, müssen Sie @ dt mit Ihrem Spaltennamen ersetzen und Update-Anweisung verwenden. – Poonam

Verwandte Themen