sql >> Database teknologi >  >> RDS >> Oracle

Diff. mellem datoer - SQL plus

Titlen på spørgsmålet inkluderer "SQL plus", hvilket betyder Oracle for mig.

Oracle har ikke en DATEDIFF-funktion. Den enkleste metode til at bestemme antallet af dage mellem 2 datoer ved hjælp af Oracle er at trække den ene dato fra den anden.

Select item, datebought, datesold, datesold-datebought as days from auctions;

Oracle gemmer både dato- og klokkeslætsoplysninger i et datofelt. Det er almindelig praksis at gemme datoer afkortet til midnat i datofelter i Oracle, hvis du er ligeglad med tiden.

Hvis dine datoer allerede er afkortet til midnat, vil den beregnede værdi være et heltal.

Men hvis dine lagrede datoer inkluderer tidsoplysninger, vil du måske afkorte værdien for at få en integralværdi. Jeg formoder, at du ønsker at afkorte hver dato før subtraktionen, sådan at hvis den blev købt på én dag, så vil den næste dag tælle som 1 dag. Oracle afkorter datoer til midnat.

select item, datebought, datesold, trunc(datesold)-trunc(datebought) as days from auctions;

Jeg er enig med WarrenT i, at din tabel ikke skal have kolonnen denormaliserede dage.



  1. Python Pandas to_sql, hvordan opretter man en tabel med en primær nøgle?

  2. Korrekt fuldtekstindeks Rails/PostgreSQL/pg_search

  3. Sådan omdøbes alle standardbegrænsninger i henhold til navnestandarder eller navngivningskonvention i SQL Server - SQL Server / TSQL vejledning del 93

  4. ScaleGrid tilføjer Oracle Cloud til Managed Database Hosting