Aritmetică cu INTERVAL
Dacă ai fi gestionat un magazin real de închirieri DVD, ai fi avut nevoie uneori să afli ce filme erau încă la clienți. În exercițiul anterior, am observat că unele înregistrări aveau valoarea NULL pentru return_date — ceea ce înseamnă că închirierea era încă activă.
Fiecare închiriere din tabela film are o coloană asociată, rental_duration, care reprezintă numărul de zile pentru care un DVD poate fi închiriat înainte de a fi considerat întârziat. În acest exercițiu, vei exclude filmele cu valoarea NULL pentru return_date și vei converti rental_duration într-un tip INTERVAL. Iată un exemplu de metodă pentru această conversie:
SELECT INTERVAL '1' day * timestamp '2019-04-10 12:34:56'
Acest exercițiu face parte din cursul
Funcții pentru manipularea datelor în PostgreSQL
Instrucțiuni pentru exercițiu
- Convertește
rental_durationînmulțindu-l cu unINTERVALde 1 zi. - Scade
rental_datedinreturn_datepentru a calcula numărul dedays_rented. - Exclude închirierile care au valoarea
NULLpentrureturn_date.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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;