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

So konvertieren Sie zwischen Datumsformaten in SQL Server mit CAST()

In SQL Server können Sie den CONVERT() verwenden Funktion zum Konvertieren eines Datumswerts von einem Datumsdatentyp in einen anderen (oder zwischen jedem anderen Datentyp). Dies ist jedoch nicht die einzige Funktion in der T-SQL-Toolbox zum Konvertieren zwischen Datentypen.

Der CAST() Die Funktion ist Teil des ANSI-SQL-Standards und erledigt die meisten Dinge CONVERT() tut. So haben Sie in vielen Fällen die Wahl, welche dieser Funktionen Sie bevorzugen.

Viele Datenbankprofis bevorzugen CAST() aufgrund der Tatsache, dass es Teil des ANSI-SQL-Standards ist, bevorzugen andere jedoch CONVERT() aufgrund der zusätzlichen Funktionalität, die die T-SQL-Implementierung bietet (z. B. die Möglichkeit, einen Datumsstil bereitzustellen).

In jedem Fall enthält dieser Artikel Beispiele für die Konvertierung zwischen verschiedenen Datumsformaten mit CAST() .

Syntax

Die Syntax lautet wie folgt:

CAST ( expression AS data_type [ ( length ) ] )

Diese Argumente sind wie folgt definiert:

expression
Jeder gültige Ausdruck.
data_type
Der Zieldatentyp. Dazu gehört xmlbigint 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 .

Beispiel 1 – SYSDATETIME() als Datum umwandeln

In diesem Beispiel generieren wir das aktuelle Datum/Uhrzeit mit dem SYSDATETIME() Funktion und wandeln Sie den Rückgabewert 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,
    CAST(SYSDATETIME() AS date) AS Converted;

Ergebnis:

+-----------------------------+-------------+
| Original                    | Converted   |
|-----------------------------+-------------|
| 2018-06-07 00:15:32.9265884 | 2018-06-07  |
+-----------------------------+-------------+

Beispiel 2 – Cast SYSDATETIME() als smalldatetime

In diesem Beispiel wandeln wir das Datum als smalldatetime um Datentyp.

SELECT 
    SYSDATETIME() AS Original,
    CAST(SYSDATETIME() AS smalldatetime) AS Converted;

Ergebnis:

+-----------------------------+---------------------+
| Original                    | Converted           |
|-----------------------------+---------------------|
| 2018-06-07 00:16:05.5142017 | 2018-06-07 00:16:00 |
+-----------------------------+---------------------+

Beispiel 3 – Cast SYSDATETIME() als datetimeoffset

In diesem Beispiel wandeln wir das Datum als datetimeoffset um Datentyp.

SELECT 
    SYSDATETIME() AS Original,
    CAST(SYSDATETIME() AS datetimeoffset) AS Converted;

Ergebnis:

+-----------------------------+------------------------------------+
| Original                    | Converted                          |
|-----------------------------+------------------------------------|
| 2018-06-07 10:19:23.9457462 | 2018-06-07 10:19:23.9457462 +00:00 |
+-----------------------------+------------------------------------+

Beispiel 4 – Wandeln Sie SYSDATETIME() als Zeit um

Sie sind nicht darauf beschränkt, die Datumskomponente des Werts anzuzeigen. Sie können es auch als Zeit übertragen Datentyp, sodass nur die Zeitkomponente zurückgegeben wird. So:

SELECT 
    SYSDATETIME() AS Original,
    CAST(SYSDATETIME() AS time) AS Converted;

Ergebnis:

+-----------------------------+------------------+
| Original                    | Converted        |
|-----------------------------+------------------|
| 2018-06-07 00:20:21.5829364 | 00:20:21.5829364 |
+-----------------------------+------------------+

Beispiel 5 – SYSDATETIMEOFFSET() als Datum umwandeln

Hier ist ein Beispiel, das eine andere Funktion verwendet, um den ursprünglichen Datums-/Uhrzeitwert zu generieren:

SELECT 
    SYSDATETIMEOFFSET() AS Original,
    CAST(SYSDATETIMEOFFSET() AS date) AS Converted;

Ergebnis:

+------------------------------------+----------------------+
| Original                           | Converted            |
|------------------------------------+----------------------|
| 2018-06-07 10:21:16.3617030 +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 WideWorldImporters abgerufen wird Beispieldatenbank:

USE WideWorldImporters;
SELECT DISTINCT TOP 10 
    LastEditedWhen, 
    CAST(LastEditedWhen AS date) 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  |
+-----------------------------+-------------+

Ich habe auch einen Beitrag geschrieben, der zeigt, wie man mit CONVERT() zwischen Datumsformaten konvertiert Funktion mit denselben Beispielen wie oben.