Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Dif. entre datas - SQL plus


O título da pergunta inclui "SQL plus", o que implica Oracle para mim.

O Oracle não possui uma função DATEDIFF. O método mais simples para determinar o número de dias entre 2 datas usando o Oracle é subtrair uma data da outra.
Select item, datebought, datesold, datesold-datebought as days from auctions;

O Oracle armazena informações de data e hora em um campo de data. É uma prática comum armazenar datas truncadas para meia-noite dentro de campos de data no Oracle se você não se importa com a hora.

Se suas datas já estiverem truncadas para meia-noite, o valor calculado será um número inteiro.

Mas se as datas armazenadas incluírem informações de tempo, convém truncar o valor para obter um valor integral. Suspeito que você gostaria de truncar cada data antes da subtração, de modo que, se comprado em um dia, qualquer hora no dia seguinte contaria como 1 dia. O Oracle trunca datas para meia-noite.
select item, datebought, datesold, trunc(datesold)-trunc(datebought) as days from auctions;

Concordo com WarrenT que sua tabela não deve ter a coluna de dias desnormalizados.