Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como você extrai apenas a data do datetime no T-Sql?


Melhor maneira é:
   SELECT DATEADD(day, DATEDIFF(Day, 0, @ADate), 0) 

Isso ocorre porque internamente, o SQL Server armazena todas as datas como dois números inteiros, dos quais o primeiro é o ****número de dias*** desde 1º de janeiro de 1900. (o segundo é a parte do tempo, armazenada como o número de segundos desde a meia-noite. (segundos para SmallDateTime s, ou milésimos de segundo para DateTime s)
Usar a expressão acima é melhor porque evita todas as conversões, lendo e acessando diretamente aquele primeiro inteiro em uma representação interna de datas sem ter que realizar nenhum processamento... os dois zeros na expressão acima (que representam 1 Jan 1900), também são utilizados diretamente sem processamento ou conversão, porque correspondem à representação interna do servidor SQL da data 1 jan 1900 exatamente como apresentada (como um número inteiro).

*NOTA. Na verdade, o número de limites de datas (meias-noites) que você precisa cruzar para ir de uma data para a outra.