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

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

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

Einer der Vorteile der Konvertierung einer smalldatetime Wert bis zum Datum ist, dass Sie die Speichergröße von 4 Byte auf 3 Byte reduzieren. Sie verlieren jedoch die Zeitkomponente aus dem Wert, sodass Sie diese Konvertierung nur durchführen würden, wenn Sie die Zeit nicht benötigen.

Die smalldatetime Datentyp sowohl das Datum als auch die Uhrzeit. Seine Sekundenkomponente ist immer auf Null (:00) gesetzt und hat keine Sekundenbruchteile. Seine Genauigkeit ist minutengenau. Seine Speichergröße beträgt 4 Bytes.

Das Datum Datentyp hingegen enthält nur das Datum. Seine Genauigkeit ist auf den nächsten Tag genau. Seine Speichergröße beträgt 3 Byte.

Um es klar zu sagen, wenn Sie eine smalldatetime konvertieren Wert bis zum Datum , Jahr, Monat und Tag werden kopiert. Die Zeit wird nicht kopiert.

Beispiel 1 – Implizite Konvertierung

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

DECLARE 
  @thesmalldatetime smalldatetime,
  @thedate date;
SET @thesmalldatetime = '2025-05-21 10:15:30';
SET @thedate = @thesmalldatetime;
SELECT 
  @thesmalldatetime AS 'smalldatetime',
  @thedate AS 'thedate';

Ergebnis:

+---------------------+------------+
| smalldatetime       | thedate    |
|---------------------+------------|
| 2025-05-21 10:16:00 | 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, smalldatetime zuzuweisen Wert zu einem Datum Variable.

In diesem Beispiel sehen wir, dass der Datumsteil von smalldatetime Wert wird in das Datum kopiert Wert, und dass die Zeit nicht kopiert wird.

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 zum expliziten Konvertieren zwischen smalldatetime und Datum .

DECLARE @thesmalldatetime smalldatetime;
SET @thesmalldatetime = '2025-05-21 10:15:30';
SELECT 
  @thesmalldatetime AS 'thesmalldatetime',
  CAST(@thesmalldatetime AS date) AS 'date';

Ergebnis:

+---------------------+------------+
| thesmalldatetime    | date       |
|---------------------+------------|
| 2025-05-21 10:16:00 | 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 @thesmalldatetime smalldatetime;
SET @thesmalldatetime = '2025-05-21 10:15:30';
SELECT 
  @thesmalldatetime AS 'thesmalldatetime',
  CONVERT(date, @thesmalldatetime) AS 'date';

Ergebnis:

+---------------------+------------+
| thesmalldatetime    | date       |
|---------------------+------------|
| 2025-05-21 10:16:00 | 2025-05-21 |
+---------------------+------------+