Den här artikeln innehåller exempel på hur du konverterar en datumtid värde till ett datum värde i SQL Server.
Den uppenbara konsekvensen av att konvertera en datetime värde till datum är att du förlorar tidsdelen. En fördel är dock att du minskar lagringsstorleken från 8 byte ner till 3 byte. Hur som helst, du skulle bara göra den här konverteringen om du inte behöver tidsdelen.
datetime datatypen inkluderar datum och tid, med en 3-siffrig del av bråkdelssekunder. Dess noggrannhet är avrundad till steg om 0,000, 0,003 eller 0,007 sekunder.
Men datumet datatypen har en noggrannhet på 1 dag (och den inkluderar inte tiden, som nämnts).
Exempel 1 – Implicit konvertering
Här är ett exempel på en implicit konvertering mellan datetime och 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';
Resultat:
+-------------------------+------------+ | datetime | date | |-------------------------+------------| | 2025-05-21 10:15:30.123 | 2025-05-21 | +-------------------------+------------+
Detta är en implicit konvertering eftersom vi inte använder en konverteringsfunktion (som de nedan) för att explicit konvertera den. I det här fallet utför SQL Server en implicit konvertering bakom kulisserna när vi försöker tilldela datetime värde till ett datum variabel.
I det här exemplet kan vi se att datumet värdet inkluderar endast datumet (utan tidskomponenten).
Exempel 2 – Explicit konvertering med CAST()
Här är ett exempel på en explicit konvertering. I det här fallet använder jag CAST()
funktion direkt inom SELECT
uttalande för att uttryckligen konvertera mellan datetime och datum .
DECLARE @thedatetime datetime; SET @thedatetime = '2025-05-21 10:15:30.123'; SELECT @thedatetime AS 'datetime', CAST(@thedatetime AS date) AS 'date';
Resultat:
+-------------------------+------------+ | datetime | date | |-------------------------+------------| | 2025-05-21 10:15:30.123 | 2025-05-21 | +-------------------------+------------+
Exempel 3 – Explicit konvertering med CONVERT()
Här är ett exempel på en explicit konvertering med CONVERT()
funktion istället för CAST()
.
DECLARE @thedatetime datetime; SET @thedatetime = '2025-05-21 10:15:30.123'; SELECT @thedatetime AS 'datetime', CONVERT(date, @thedatetime) AS 'date';
Resultat:
+-------------------------+------------+ | datetime | date | |-------------------------+------------| | 2025-05-21 10:15:30.123 | 2025-05-21 | +-------------------------+------------+