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_datekolonne.) - Startdatoen. (I vores eksempel er det
purchase_datekolonne.)
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.