sql >> Databasteknik >  >> RDS >> Sqlserver

Hur extraherar du just date från datetime i T-Sql?

Bästa sättet är:

   SELECT DATEADD(day, DATEDIFF(Day, 0, @ADate), 0) 

Detta beror på att internt lagrar SQL Server alla datum som två heltal, varav det första är ****antal dagar*** sedan 1 januari 1900. (det andra är tidsdelen, lagrad som antalet sekunder sedan midnatt. (sekunder för SmallDateTime s, eller millisekunder för DateTime s)
Att använda uttrycket ovan är bättre eftersom det undviker alla omvandlingar, direkt läsning och åtkomst av det första heltal i en inre datumrepresentation utan att behöva utföra någon bearbetning... de två nollorna i uttrycket ovan (som representerar 1 jan 1900), används också direkt utan bearbetning eller konvertering, eftersom de matchar SQL-serverns interna representation av datumet 1 jan 1900 exakt som presenterat (som ett heltal).

*NOTERA. Faktiskt antalet datumgränser (midnattar) du måste passera för att komma från det ena datumet till det andra.



  1. Diakritisk okänslig mysql-sökning?

  2. Skapa Date-objekt i PHP för datum före 1970 i visst format

  3. Använder kommandot LOAD DATA INFILE i en lagrad procedur

  4. Hur man använder svar från en Jmeter JDBC-förfrågan i en HTTP-förfrågan