sql >> Database >  >> RDS >> Mysql

Het aantal dagen tussen twee datums vinden in MySQL

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:

  1. De einddatum. (In ons voorbeeld is dit de expiration_date kolom.)
  2. 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.


  1. Hoe tel je in Redshift/Postgres rijen die aan een voorwaarde voldoen?

  2. Rails:FATAL - Peer-authenticatie mislukt voor gebruiker (PG::Error)

  3. Dynamisch gegevens laden op div-scroll met behulp van php, mysql, jQuery en ajax

  4. FOUT 1045 (28000):Toegang geweigerd voor gebruiker 'root'@'localhost' (met wachtwoord:JA)