INTERVAL 运算
如果您在经营一家真实的 DVD 租赁店,您会经常需要判断当前有哪些影片还在顾客手中。上一练习中,结果里有些记录的 return_date 为 NULL,这是因为这些租赁尚未归还。
film 表中的每条租赁都有一个关联的 rental_duration 列,表示顾客在被视为逾期之前可租用 DVD 的天数。本题中,您将排除 return_date 为 NULL 的影片,并把 rental_duration 转换为 INTERVAL 类型。下面是执行这种转换的一种方法提醒:
SELECT INTERVAL '1' day * timestamp '2019-04-10 12:34:56'
本练习是课程的一部分
在 PostgreSQL 中使用函数处理数据
练习说明
- 将
rental_duration乘以 1 天的INTERVAL进行转换。 - 用
return_date减去rental_date,计算出租的天数days_rented。 - 排除
return_date为NULL的租赁记录。
交互式实操练习
通过完成这段示例代码来试试这个练习。
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;