sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan udtrækker du netop dato fra datetime i T-Sql?

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.



  1. Fejl Maksimalt antal tegn overskredet i SQL-sætning EDIT:Problem, der viser tabel

  2. Hvilken datatype til lagring af billeder og dokumenter i SQL Server 2005

  3. Databasemodel for et meddelelsessystem

  4. Sådan ugyldiggøres en SQL-sætning i Oracle SQL-området, så der bliver lavet en ny plan ved indsamling af statistik