Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Konvertieren Sie ein Datum im ISO-Format in DATETIME

Das Problem ist, dass Ihr String nicht ist ein akzeptiertes Datetime-Format von SQL Server. SQL Server erkennt die ISO8601 Format, das ist:

yyyy-mm-ddThh:mi:ss.mmm

Das wäre 2013-03-02T16:48:00 für Ihr Datum oben.

Siehe Formate für Datum und Uhrzeit Abschnitt.

Die folgende Anweisung wird also fehlschlagen:

declare @date nvarchar(max) = '20130302T164800'

select convertedDate = cast(@date as datetime)

Wenn Sie die Zeichenfolge in ISO8601 konvertieren formatieren, funktioniert die Anweisung:

declare @date nvarchar(max) = '2013-03-02T16:48:00'

select convertedDate = cast(@date as datetime)

SQL-Geige mit Demo .

Sie können Ihr Format auf ein Format aktualisieren, das von SQL Server erkannt wird, und die Zeichenfolge in einer Anweisung in eine Datumszeit umwandeln:

declare @date nvarchar(max) = '20130302T164800'

select cast(left(@date, 4)
  + '-' + substring(@date,5,2)
  + '-' + substring(@date,7,5)
  + ':' + substring(@date,12,2)
  + ':' + substring(@date,14,2) as datetime)

SQL-Geige mit Demo .

Dies ist nur ein Beispiel, Sie könnten es in jedes von SQL Server erkannte Format konvertieren, aber dies konvertiert es in ISO8601 . Konvertieren Sie es grundsätzlich in ein anderes Format, damit die Konvertierung funktioniert.