Den bedste måde er:
SELECT DATEADD(day, DATEDIFF(Day, 0, @ADate), 0)
Dette skyldes internt, at SQL Server gemmer alle datoer som to heltal, hvoraf den første er ****antal dage*** siden 1. januar 1900. (den anden er tidsdelen, gemt som antallet af dage*** sekunder siden midnat. (sekunder for SmallDateTime
s, eller millisekunder for DateTime
s)
Det er bedre at bruge ovenstående udtryk, fordi det undgår alle konverteringer, direkte læsning og adgang til det første heltal i en intern datorepræsentation uden at skulle udføre nogen behandling... de to nuller i ovenstående udtryk (som repræsenterer 1 januar 1900), bruges også direkte uden behandling eller konvertering, fordi de matcher SQL-serverens interne repræsentation af datoen 1. januar 1900 nøjagtigt som præsenteret (som et heltal).
*BEMÆRK. Faktisk er antallet af datogrænser (midnat) du skal krydse for at komme fra den ene dato til den anden.