Problem:
Du vil gerne have forskellen, i dage, mellem to datoer i en MySQL-database.
Eksempel:
Vores database har en tabel med navnet food
med data i kolonnerne id
, name
, purchase_date
og expiration_date
.
id | navn | købsdato | udløbsdato |
---|---|---|---|
1 | brød | 2019-07-20 | 2019-08-22 |
2 | smør | 2018-07-30 | 2019-08-10 |
3 | mælk | 2019-01-12 | 2019-01-13 |
4 | yoghurt | 2019-02-25 | 2019-02-24 |
Lad os for hvert fødevareprodukt få navnet på produktet og antallet af dage mellem dets udløbsdato og købsdato.
Løsning:
Vi bruger DATEDIFF()
fungere. Her er den forespørgsel, du ville skrive:
SELECT name, DATEDIFF(expiration_date, purchase_date) AS days FROM food;
Her er resultatet af forespørgslen:
navn | dage |
---|---|
brød | 33 |
smør | 376 |
mælk | 1 |
yoghurt | -1 |
Diskussion:
Brug DATEDIFF()
funktion til at hente antallet af dage mellem to datoer i en MySQL-database. Denne funktion tager to argumenter:
- Slutdatoen. (I vores eksempel er det
expiration_date
kolonne.) - Startdatoen. (I vores eksempel er det
purchase_date
kolonne.)
Disse argumenter kan være værdier for dato/dato/klokkeslæt, udtryk, der returnerer værdier for dato/dato/klokkeslæt, eller kolonner af datatypen dato/dato/dato.
Denne funktion trækker startdatoen fra slutdatoen og returnerer antallet af dage som et heltal. I vores eksempel smør blev købt '2018-07-30', men dens udløbsdato var '2019-08-10'; efter køb kunne den spises i 376 dage. Bemærk, at yoghurt er købt som et forældet produkt:forskellen i dage er -1, og dens købsdato er senere end udløbsdatoen.