Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie extrahieren Sie in T-Sql nur das Datum aus Datetime?

Der beste Weg ist:

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

Dies liegt daran, dass SQL Server intern alle Datumsangaben als zwei Ganzzahlen speichert, von denen die erste die ****Anzahl der Tage*** seit dem 1. Januar 1900 ist. (Die zweite ist der Zeitabschnitt, der als Anzahl von gespeichert wird Sekunden seit Mitternacht. (Sekunden für SmallDateTime s oder Millisekunden für DateTime s)
Die Verwendung des obigen Ausdrucks ist besser, weil es alle Konvertierungen vermeidet, direkt die erste ganze Zahl in einer internen Datumsdarstellung liest und darauf zugreift, ohne irgendeine Verarbeitung durchführen zu müssen ... die zwei Nullen im obigen Ausdruck (die 1 darstellen Januar 1900), werden ebenfalls direkt ohne Verarbeitung oder Konvertierung verwendet, weil sie mit der internen Darstellung des Datums 1. Januar 1900 im SQL-Server genau so übereinstimmen, wie sie dargestellt wird (als Ganzzahl)..

*HINWEIS. Eigentlich die Anzahl der Datumsgrenzen (Mitternacht), die Sie überschreiten müssen, um von einem Datum zum anderen zu gelangen.