Wenn Sie mit Datenbanken und anderen Programmierumgebungen arbeiten, erhalten Sie manchmal einen Datumswert, aber im falschen Format/Datentyp. Wenn beispielsweise ein Datum mit einer eingebauten Datumsfunktion generiert wurde, kann es sowohl das Datum als auch die Uhrzeit bis auf die letzte Nanosekunde enthalten. Und alles, was Sie wollen, ist der Tag, der Monat und das Jahr, sagen Sie so:2018-01-01.
Wenn dies passiert, während Sie SQL Server verwenden, können Sie CONVERT()
verwenden Funktion, um es in einen anderen Datentyp zu konvertieren. Wenn Sie dies tun, bestimmt der Datentyp das Format, in dem er angezeigt wird.
Dieser Artikel enthält Beispiele für die Verwendung von CONVERT()
Funktion in SQL Server, um einen Datumswert in einen anderen (Datums-)Datentyp zu konvertieren.
Syntax
Zunächst einmal die offizielle Syntax:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
Diese Argumente sind wie folgt definiert:
expression
- Jeder gültige Ausdruck.
data_type
- Der Zieldatentyp. Dazu gehört xml , bigint und sql_variant . Alias-Datentypen können nicht verwendet werden.
length
- Eine optionale ganze Zahl, die die Länge des Zieldatentyps angibt. Der Standardwert ist
30
. style
- Ein ganzzahliger Ausdruck, der angibt, wie
CONVERT()
Funktion übersetzt Ausdruck . Für einen Stilwert von NULL wird NULL zurückgegeben. Datentyp bestimmt die Reichweite.
Beispiel 1 – Konvertieren von SYSDATETIME() in Datumsdatentyp
In diesem Beispiel generieren wir das aktuelle Datum/Uhrzeit mit dem SYSDATETIME()
Funktion und wandle das in ein Datum um Datentyp.
Beachten Sie, dass SYSDATETIME()
generiert seinen Wert als datetime2(7) Datentyp, also konvertieren wir ihn von diesem Datentyp in einen anderen Datentyp.
SELECT SYSDATETIME() AS Original, CONVERT(date, SYSDATETIME()) AS Converted;
Ergebnis:
+-----------------------------+-------------+ | Original | Converted | |-----------------------------+-------------| | 2018-06-06 22:53:47.2318751 | 2018-06-06 | +-----------------------------+-------------+
Beispiel 2 – Konvertieren von SYSDATETIME() in smalldatetime Datentyp
In diesem Beispiel wandeln wir das Datum in ein smalldatetime um Datentyp.
SELECT SYSDATETIME() AS Original, CONVERT(smalldatetime, SYSDATETIME()) AS Converted;
Ergebnis:
+-----------------------------+---------------------+ | Original | Converted | |-----------------------------+---------------------| | 2018-06-06 22:56:51.6873250 | 2018-06-06 22:57:00 | +-----------------------------+---------------------+
Beispiel 3 – Konvertieren von SYSDATETIME() in datetimeoffset Datentyp
In diesem Beispiel konvertieren wir das Datum in ein datetimeoffset Datentyp.
SELECT SYSDATETIME() AS Original, CONVERT(datetimeoffset, SYSDATETIME()) AS Converted;
Ergebnis:
+-----------------------------+------------------------------------+ | Original | Converted | |-----------------------------+------------------------------------| | 2018-06-07 09:17:15.2410693 | 2018-06-07 09:17:15.2410693 +00:00 | +-----------------------------+------------------------------------+
Beispiel 4 – Konvertieren von SYSDATETIME() in den Zeitdatentyp
Sie sind nicht darauf beschränkt, die Datumskomponente des Werts anzuzeigen. Sie können es auch in eine Zeit umwandeln Datentyp, sodass nur die Zeitkomponente zurückgegeben wird. So:
SELECT SYSDATETIME() AS Original, CONVERT(time, SYSDATETIME()) AS Converted;
Ergebnis:
+-----------------------------+------------------+ | Original | Converted | |-----------------------------+------------------| | 2018-06-06 23:01:41.7070775 | 23:01:41.7070775 | +-----------------------------+------------------+
Beispiel 5 – Konvertieren von SYSDATETIMEOFFSET()
Die vorherigen Beispiele verwenden alle dieselbe eingebaute Funktion, um den Datums-/Uhrzeitwert zu generieren, aber natürlich muss er nicht von dieser einen Funktion generiert werden. Hier ist ein Beispiel mit SYSDATETIMEOFFSET()
:
SELECT SYSDATETIMEOFFSET() AS Original, CONVERT(date, SYSDATETIMEOFFSET()) AS Converted;
Ergebnis:
+------------------------------------+----------------------+ | Original | Converted | |------------------------------------+----------------------| | 2018-06-07 09:12:27.3660685 +10:00 | 2018-06-07 | +------------------------------------+----------------------+
Beispiel 6 – Konvertieren aus einer Datenbankabfrage
Hier ist ein Beispiel für die Konvertierung des Datums, das aus einer Spalte in der WideWorldImporters-Beispieldatenbank abgerufen wird:
USE WideWorldImporters; SELECT DISTINCT TOP 10 LastEditedWhen, CONVERT(date, LastEditedWhen) AS 'Converted' FROM Sales.CustomerTransactions;
Ergebnis:
+-----------------------------+-------------+ | LastEditedWhen | Converted | |-----------------------------+-------------| | 2013-01-02 11:30:00.0000000 | 2013-01-02 | | 2013-01-03 11:30:00.0000000 | 2013-01-03 | | 2013-01-04 11:30:00.0000000 | 2013-01-04 | | 2013-01-05 11:30:00.0000000 | 2013-01-05 | | 2013-01-06 11:30:00.0000000 | 2013-01-06 | | 2013-01-08 11:30:00.0000000 | 2013-01-08 | | 2013-01-09 11:30:00.0000000 | 2013-01-09 | | 2013-01-10 11:30:00.0000000 | 2013-01-10 | | 2013-01-11 11:30:00.0000000 | 2013-01-11 | | 2013-01-12 11:30:00.0000000 | 2013-01-12 | +-----------------------------+-------------+
Beachten Sie, dass Sie nicht darauf beschränkt sind, nur zwischen zwei verschiedenen Datumsformaten zu konvertieren. Wenn Sie beispielsweise ein Datum als Zeichenfolge gespeichert haben, können Sie auch CONVERT()
verwenden zum Konvertieren von einer Zeichenfolge in ein Datum sowie in jeden anderen Datentyp, in den Sie möglicherweise konvertieren müssen.
Ich habe auch einen Beitrag geschrieben, der zeigt, wie man mit CAST()
zwischen Datumsformaten konvertiert Funktion mit den gleichen Beispielen wie oben.