sql >> Databasteknik >  >> RDS >> Oracle

Diff. mellan datum - SQL plus

Rubriken på frågan inkluderar "SQL plus", vilket innebär Oracle för mig.

Oracle har ingen DATEDIFF-funktion. Den enklaste metoden för att bestämma antalet dagar mellan två datum med Oracle är att subtrahera ett datum från det andra.

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

Oracle lagrar både datum- och tidsinformation i ett datumfält. Det är vanligt att lagra datum trunkerade till midnatt i datumfält i Oracle om du inte bryr dig om tiden.

Om dina datum redan är trunkerade till midnatt kommer det beräknade värdet att vara ett heltal.

Men om dina lagrade datum inkluderar tidsinformation, kanske du vill trunkera värdet för att få ett integralvärde. Jag misstänker att du skulle vilja trunkera varje datum före subtraktionen, så att om du köpte den en dag, så skulle när som helst nästa dag räknas som 1 dag. Oracle trunkerar datum till midnatt.

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

Jag håller med WarrenT om att din tabell inte bör ha kolumnen för denormaliserade dagar.



  1. Hjälp med rekursiv SELECT

  2. PHP PDO-initiering misslyckas på grund av dubbelport - Uncatught PDOException:SQLSTATE[HY000] [2002]

  3. Välj slumpmässig rad från en PostgreSQL-tabell med viktade radsannolikheter

  4. MySQL COUNT() – Få antalet rader som ska returneras av en fråga