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

Konvertieren Sie „datetime“ in „date“ in SQL Server (T-SQL-Beispiele)

Dieser Artikel enthält Beispiele für die Konvertierung einer datetime Wert zu einem Datum Wert in SQL Server.

Die offensichtliche Folge der Konvertierung einer datetime Wert bis zum Datum ist, dass Sie den Zeitanteil verlieren. Ein Vorteil ist jedoch, dass Sie die Speichergröße von 8 Byte auf 3 Byte reduzieren. In jedem Fall würden Sie diese Konvertierung nur durchführen, wenn Sie den Zeitanteil nicht benötigen.

Die datetime Der Datentyp enthält das Datum und die Uhrzeit mit einem 3-stelligen Sekundenbruchteil. Die Genauigkeit wird auf 0,000, 0,003 oder 0,007 Sekunden gerundet.

Allerdings das Datum Der Datentyp hat eine Genauigkeit von 1 Tag (und die Zeit ist, wie erwähnt, nicht enthalten).

Beispiel 1 – Implizite Konvertierung

Hier ist ein Beispiel für eine implizite Konvertierung zwischen datetime und Datum .

DECLARE 
  @thedatetime datetime, 
  @thedate date;
SET @thedatetime = '2025-05-21 10:15:30.123';
SET @thedate = @thedatetime;
SELECT 
  @thedatetime AS 'datetime',
  @thedate AS 'date';

Ergebnis:

+-------------------------+------------+
| datetime                | date       |
|-------------------------+------------|
| 2025-05-21 10:15:30.123 | 2025-05-21 |
+-------------------------+------------+

Dies ist eine implizite Konvertierung, da wir keine Konvertierungsfunktion (wie die unten) verwenden, um sie explizit zu konvertieren. In diesem Fall führt SQL Server im Hintergrund eine implizite Konvertierung durch, wenn wir versuchen, datetime zuzuweisen Wert zu einem Datum Variable.

In diesem Beispiel sehen wir, dass das Datum Der Wert enthält nur das Datum (ohne die Zeitkomponente).

Beispiel 2 – Explizite Konvertierung mit CAST()

Hier ist ein Beispiel für eine explizite Konvertierung. In diesem Fall verwende ich den CAST() Funktion direkt innerhalb des SELECT -Anweisung, um explizit zwischen datetime zu konvertieren und Datum .

DECLARE @thedatetime datetime;
SET @thedatetime = '2025-05-21 10:15:30.123';
SELECT 
  @thedatetime AS 'datetime',
  CAST(@thedatetime AS date) AS 'date';

Ergebnis:

+-------------------------+------------+
| datetime                | date       |
|-------------------------+------------|
| 2025-05-21 10:15:30.123 | 2025-05-21 |
+-------------------------+------------+

Beispiel 3 – Explizite Konvertierung mit CONVERT()

Hier ist ein Beispiel für eine explizite Konvertierung mit CONVERT() Funktion anstelle von CAST() .

DECLARE @thedatetime datetime;
SET @thedatetime = '2025-05-21 10:15:30.123';
SELECT 
  @thedatetime AS 'datetime',
  CONVERT(date, @thedatetime) AS 'date';

Ergebnis:

+-------------------------+------------+
| datetime                | date       |
|-------------------------+------------|
| 2025-05-21 10:15:30.123 | 2025-05-21 |
+-------------------------+------------+