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

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

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

Beim Konvertieren eines datetime2 Wert zu einem Datum Datentyp verlieren Sie den Zeitanteil. Allerdings reduzieren Sie damit auch die Speichergröße von 7 bis 9 Byte auf 3 Byte. In jedem Fall würdest du diese Umwandlung nur vornehmen, wenn du den Zeitanteil nicht benötigst.

Die datetime2 Der Datentyp enthält das Datum und die Uhrzeit mit einem Sekundenbruchteil zwischen 0 und 7 (dies hängt davon ab, wie viele Sekundenbruchteile ihm zugewiesen sind). Seine Genauigkeit beträgt 100 Nanosekunden.

Das Datum Der Datentyp hingegen enthält keine Uhrzeit und hat eine Genauigkeit von 1 Tag.

Beispiel 1 – Implizite Konvertierung

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

DECLARE 
  @thedatetime2 datetime2, 
  @thedate date;
SET @thedatetime2 = '2025-05-21 10:15:30.1234567';
SET @thedate = @thedatetime2;
SELECT 
  @thedatetime2 AS 'datetime2',
  @thedate AS 'date';

Ergebnis:

+-----------------------------+------------+
| datetime2                   | date       |
|-----------------------------+------------|
| 2025-05-21 10:15:30.1234567 | 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, datetime2 zuzuweisen Wert zu einem Datum Variable.

Hier sehen wir das Datum Der Wert enthält nur das Datum (ohne die Zeitkomponente).

In diesem Beispiel das datetime2 value verwendet die Standardgenauigkeit (was zu 7 Dezimalstellen führt). Dies könnte auf eine beliebige Zahl reduziert werden und das Konvertierungsergebnis wäre dasselbe.

DECLARE 
  @thedatetime2 datetime2(0), 
  @thedate date;
SET @thedatetime2 = '2025-05-21 10:15:30.1234567';
SET @thedate = @thedatetime2;
SELECT 
  @thedatetime2 AS 'datetime2',
  @thedate AS 'date';

Ergebnis:

+---------------------+------------+
| datetime2           | date       |
|---------------------+------------|
| 2025-05-21 10:15:30 | 2025-05-21 |
+---------------------+------------+

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 datetime2 zu konvertieren und Datum .

DECLARE @thedatetime2 datetime2(4);
SET @thedatetime2 = '2025-05-21 10:15:30.1234';
SELECT 
  @thedatetime2 AS 'datetime2',
  CAST(@thedatetime2 AS date) AS 'date'; 

Ergebnis:

+--------------------------+------------+
| datetime2                | date       |
|--------------------------+------------|
| 2025-05-21 10:15:30.1234 | 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 @thedatetime2 datetime2(4);
SET @thedatetime2 = '2025-05-21 10:15:30.1234';
SELECT 
  @thedatetime2 AS 'datetime2',
  CONVERT(date, @thedatetime2) AS 'date'; 

Ergebnis:

+--------------------------+------------+
| datetime2                | date       |
|--------------------------+------------|
| 2025-05-21 10:15:30.1234 | 2025-05-21 |
+--------------------------+------------+