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.