Tiêu đề của câu hỏi bao gồm "SQL plus", ngụ ý Oracle đối với tôi.
Oracle không có hàm DATEDIFF. Phương pháp đơn giản nhất để xác định số ngày giữa 2 ngày bằng Oracle là lấy ngày kia trừ đi một ngày.
Select item, datebought, datesold, datesold-datebought as days from auctions;
Oracle lưu trữ cả thông tin ngày và giờ trong một trường ngày tháng. Thực tế phổ biến là lưu trữ các ngày bị cắt ngắn đến nửa đêm trong các trường ngày tháng trong Oracle nếu bạn không quan tâm đến thời gian.
Nếu ngày của bạn đã bị cắt ngắn đến nửa đêm, thì giá trị được tính sẽ là một số nguyên.
Nhưng nếu ngày được lưu trữ của bạn bao gồm thông tin thời gian, thì bạn có thể muốn cắt bớt giá trị để nhận được giá trị tích phân. Tôi nghi ngờ rằng bạn muốn cắt bớt mỗi ngày trước phép trừ, chẳng hạn như nếu mua vào một ngày, thì bất kỳ thời điểm nào trong ngày hôm sau sẽ được tính là 1 ngày. Oracle cắt bớt ngày đến nửa đêm.
select item, datebought, datesold, trunc(datesold)-trunc(datebought) as days from auctions;
Tôi đồng ý với WarrenT rằng bảng của bạn không nên có cột ngày không chuẩn hóa.