Probleem:
U wilt het verschil, in dagen, zien tussen twee datums in een MySQL-database.
Voorbeeld:
Onze database heeft een tabel met de naam food
met gegevens in de kolommen id
, name
, purchase_date
, en expiration_date
.
id | naam | purchase_date | vervaldatum |
---|---|---|---|
1 | brood | 2019-07-20 | 2019-08-22 |
2 | boter | 30-07-2018 | 2019-08-10 |
3 | melk | 2019-01-12 | 2019-01-13 |
4 | yoghurt | 25-02-2019 | 24-02-2019 |
Laten we voor elk voedingsproduct de naam van het product en het aantal dagen tussen de vervaldatum en de aankoopdatum geven.
Oplossing:
We gebruiken de DATEDIFF()
functie. Dit is de vraag die je zou schrijven:
SELECT name, DATEDIFF(expiration_date, purchase_date) AS days FROM food;
Dit is het resultaat van de zoekopdracht:
naam | dagen |
---|---|
brood | 33 |
boter | 376 |
melk | 1 |
yoghurt | -1 |
Discussie:
Gebruik de DATEDIFF()
functie om het aantal dagen tussen twee datums in een MySQL-database op te halen. Deze functie heeft twee argumenten:
- De einddatum. (In ons voorbeeld is dit de
expiration_date
kolom.) - De startdatum. (In ons voorbeeld is dit de
purchase_date
kolom.)
Deze argumenten kunnen datum/datum/tijd-waarden zijn, expressies die datum/datum/tijd-waarden retourneren, of kolommen van het datatype datetime of date.
Deze functie trekt de startdatum af van de einddatum en retourneert het aantal dagen als een geheel getal. In ons voorbeeld boter is gekocht op '2018-07-30', maar de vervaldatum was '2019-08-10'; na aankoop kon het gedurende 376 dagen worden gegeten. Merk op dat yoghurt is gekocht als een verouderd product:het verschil in dagen is -1 en de aankoopdatum is later dan de vervaldatum.