Denne artikel indeholder eksempler på konvertering af en datotid værdi til en dato værdi i SQL Server.
Den åbenlyse konsekvens af at konvertere en datotid værdi til dato er, at du mister tidsdelen. En fordel er dog, at du reducerer lagerstørrelsen fra 8 bytes ned til 3 bytes. Uanset hvad, vil du kun foretage denne konvertering, hvis du ikke har brug for tidsdelen.
datoen datatypen inkluderer dato og klokkeslæt med en 3-cifret brøksekunderdel. Dens nøjagtighed er afrundet til trin på 0,000, 0,003 eller 0,007 sekunder.
Dog datoen datatypen har en nøjagtighed på 1 dag (og den inkluderer ikke tiden, som nævnt).
Eksempel 1 – Implicit konvertering
Her er et eksempel på en implicit konvertering mellem datetime og dato .
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 | +-------------------------+------------+
Dette er en implicit konvertering, fordi vi ikke bruger en konverteringsfunktion (som dem nedenfor) til eksplicit at konvertere den. I dette tilfælde udfører SQL Server en implicit konvertering bag kulisserne, når vi forsøger at tildele datetime værdi til en dato variabel.
I dette eksempel kan vi se, at datoen værdien inkluderer kun datoen (uden tidskomponenten).
Eksempel 2 – Eksplicit konvertering ved hjælp af CAST()
Her er et eksempel på en eksplicit konvertering. I dette tilfælde bruger jeg CAST()
funktion direkte i SELECT
sætning for eksplicit at konvertere mellem dato og klokkeslæt og dato .
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 | +-------------------------+------------+
Eksempel 3 – Eksplicit konvertering ved hjælp af CONVERT()
Her er et eksempel på en eksplicit konvertering ved hjælp af CONVERT()
funktion i stedet for 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 | +-------------------------+------------+