SQL leren: Datumfuncties
Rekenen met datums
"Hoeveel boeken zijn er te laat? En hoe lang al?" Sanne heeft een stapel aanmaningen klaarliggen, maar weet niet naar wie. Vandaag is het 15 november 2025.
Een stuk uit een datum halen
Datums staan als tekst in de vorm 'jaar-maand-dag'. Met strftime haal je er een stuk uit: '%Y' is het jaar, '%m' de maand, '%d' de dag.
Let op: het resultaat is tekst, met een voorloopnul. Maart is '03', niet 3.
SELECT uitgeleend_op, strftime('%Y', uitgeleend_op) AS jaar, strftime('%m', uitgeleend_op) AS maand FROM uitleningen| uitgeleend_op | jaar | maand |
|---|---|---|
| 2024-11-04 | 2024 | 11 |
| 2024-12-02 | 2024 | 12 |
| 2025-01-08 | 2025 | 01 |
| 2025-01-20 | 2025 | 01 |
| 2025-02-03 | 2025 | 02 |
| 2025-02-15 | 2025 | 02 |
| 2025-03-01 | 2025 | 03 |
| 2025-03-12 | 2025 | 03 |
Rekenen met dagen
date(datum, '+21 days') telt dagen op (of af met '-7 days'). Het verschil tussen twee datums krijg je met julianday: dat zet een datum om naar een dagnummer, en die kan je van elkaar aftrekken.
Is een van beide datums NULL, zoals bij een boek dat nog niet terug is, dan is het resultaat ook NULL.
SELECT uitgeleend_op, date(uitgeleend_op, '+21 days') AS terug_voor, julianday(teruggebracht_op) - julianday(uitgeleend_op) AS dagen_weg FROM uitleningen| uitgeleend_op | terug_voor | dagen_weg |
|---|---|---|
| 2024-11-04 | 2024-11-25 | 18 |
| 2024-12-02 | 2024-12-23 | 25 |
| 2025-01-08 | 2025-01-29 | 14 |
| 2025-01-20 | 2025-02-10 | 30 |
| 2025-02-03 | 2025-02-24 | 21 |
| 2025-02-15 | 2025-03-08 | 9 |
| 2025-03-01 | 2025-03-22 | 20 |
| 2025-03-12 | 2025-04-02 | 45 |
Probeer het zelf
Vandaag is 15 november 2025. Welke boeken zijn nog niet terug en al over tijd? Toon id, lid_id en terug_voor.
Klaar voor meer?
De volledige les heeft 7 oefeningen, van makkelijk naar uitdagend, met hints, punten en een reeks die je kan opbouwen.
Begin aan de les