De beste manier is:
SELECT DATEADD(day, DATEDIFF(Day, 0, @ADate), 0)
Dit komt doordat SQL Server intern alle datums opslaat als twee gehele getallen, waarvan de eerste het ****aantal dagen*** sinds 1 januari 1900 is. (de tweede is het tijdsgedeelte, opgeslagen als het aantal dagen seconden sinds middernacht (seconden voor SmallDateTime
s, of milleseconden voor DateTime
s)
Het is beter om de bovenstaande uitdrukking te gebruiken omdat het alle conversies vermijdt, en dat eerste gehele getal in een interne representatie van datums rechtstreeks leest en opent zonder enige verwerking uit te voeren... de twee nullen in de bovenstaande uitdrukking (die 1 vertegenwoordigen jan 1900), worden ook direct gebruikt zonder verwerking of conversie, omdat ze exact overeenkomen met de SQL server-interne representatie van de datum 1 jan 1900 zoals gepresenteerd (als een geheel getal).
*OPMERKING. Eigenlijk het aantal datumgrenzen (middernachten) dat je moet overschrijden om van de ene datum naar de andere te gaan.