Tytuł pytania zawiera „SQL plus”, co oznacza dla mnie Oracle.
Oracle nie ma funkcji DATEDIFF. Najprostszą metodą określenia liczby dni między 2 datami za pomocą Oracle jest odjęcie jednej daty od drugiej.
Select item, datebought, datesold, datesold-datebought as days from auctions;
Oracle przechowuje zarówno informacje o dacie, jak i godzinie w polu daty. Powszechną praktyką jest przechowywanie dat skróconych do północy w polach dat w Oracle, jeśli nie zależy Ci na czasie.
Jeśli daty są już skrócone do północy, obliczona wartość będzie liczbą całkowitą.
Ale jeśli przechowywane daty zawierają informacje o czasie, możesz skrócić wartość, aby uzyskać wartość całkowitą. Podejrzewam, że chciałbyś skrócić każdą datę przed odjęciem, tak że jeśli kupisz jeden dzień, to każdy kolejny dzień będzie liczony jako 1 dzień. Oracle skraca daty do północy.
select item, datebought, datesold, trunc(datesold)-trunc(datebought) as days from auctions;
Zgadzam się z WarrenT, że w Twojej tabeli nie powinna znajdować się kolumna z denormalizowanymi dniami.