НачатьНачать бесплатно

Арифметика с INTERVAL

Если бы вы управляли настоящим магазином проката DVD, вам периодически нужно было бы определять, какие фильмы сейчас находятся у клиентов на руках. В предыдущем упражнении мы видели, что в некоторых записях значение return_date равно NULL — это означает, что аренда ещё не завершена.

Каждая запись об аренде в таблице film содержит столбец rental_duration, который указывает количество дней, в течение которых клиент может держать DVD, прежде чем аренда считается просроченной. В этом упражнении вы исключите фильмы со значением NULL в столбце return_date, а также преобразуете rental_duration в тип INTERVAL. Вот один из способов выполнить такое преобразование:

SELECT INTERVAL '1' day * timestamp '2019-04-10 12:34:56'

Это упражнение является частью курса

Функции для работы с данными в PostgreSQL

Посмотреть курс

Инструкции к упражнению

  • Преобразуйте rental_duration, умножив его на INTERVAL в 1 день.
  • Вычтите rental_date из return_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;
Редактировать и запускать код