Phép toán với INTERVAL
Nếu bạn đang điều hành một cửa hàng cho thuê DVD thực sự, sẽ có lúc bạn cần xác định những tựa phim nào hiện đang được khách hàng thuê. Ở bài trước, chúng ta thấy một số bản ghi trong kết quả có NULL ở cột return_date. Điều này là do lượt thuê đó vẫn chưa được trả.
Mỗi bản ghi trong bảng film có cột rental_duration thể hiện số ngày mà khách có thể thuê DVD trước khi bị coi là trễ hạn. Trong ví dụ này, bạn sẽ loại trừ các phim có return_date là NULL và đồng thời chuyển rental_duration sang kiểu INTERVAL. Dưới đây là một cách để thực hiện việc chuyển đổi này.
SELECT INTERVAL '1' day * timestamp '2019-04-10 12:34:56'
Bài tập này là một phần của khóa học
Các hàm thao tác dữ liệu trong PostgreSQL
Hướng dẫn bài tập
- Chuyển
rental_durationbằng cách nhân nó vớiINTERVAL1 ngày - Trừ
rental_datetừreturn_dateđể tính sốdays_rented. - Loại trừ các lượt thuê có
return_datelàNULL.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
SELECT
f.title,
-- Convert the rental_duration to an interval
___ '1' ___ * ___.___,
-- Calculate the days rented as we did previously
r.return_date - ___.___ AS days_rented
FROM film AS f
INNER JOIN inventory AS i ON f.film_id = i.film_id
INNER JOIN rental AS r ON i.inventory_id = r.inventory_id
-- Filter the query to exclude outstanding rentals
WHERE r.return_date ___ ___ ___
ORDER BY f.title;