sql >> Database teknologi >  >> RDS >> Mysql

Sådan finder du antallet af dage mellem to datoer i MySQL

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:

  1. Slutdatoen. (I vores eksempel er det expiration_date kolonne.)
  2. 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.


  1. Udvikling af PostgreSQL til Windows, del 2

  2. Hvordan formaterer jeg et tal med kommaer i T-SQL?

  3. Hvor sund er din SQL-server? Proaktiv databaseovervågning er kritisk

  4. Sådan sammenlignes dato i SQL