sql >> Databáze >  >> RDS >> Mysql

Jak zjistit počet dní mezi dvěma daty v MySQL

Problém:

Rádi byste získali rozdíl ve dnech mezi dvěma daty v databázi MySQL.

Příklad:

Naše databáze obsahuje tabulku s názvem food s údaji ve sloupcích id , name , purchase_date a expiration_date .

id jméno purchase_date expiration_date
1 chléb 20. 7. 2019 22. 8. 2019
2 máslo 2018-07-30 2019-08-10
3 mléko 2019-01-12 2019-01-13
4 jogurt 25. 2. 2019 24. 2. 2019

U každého potravinářského produktu si uveďme název produktu a počet dní mezi jeho expirací a datem nákupu.

Řešení:

Použijeme DATEDIFF() funkce. Zde je dotaz, který byste napsali:

SELECT
  name,
  DATEDIFF(expiration_date, purchase_date) AS days
FROM food;

Zde je výsledek dotazu:

jméno dnů
chléb 33
máslo 376
mléko 1
jogurt -1

Diskuse:

Použijte DATEDIFF() funkce pro načtení počtu dní mezi dvěma daty v databázi MySQL. Tato funkce má dva argumenty:

  1. Datum ukončení. (V našem příkladu je to expiration_date sloupec.)
  2. Datum zahájení. (V našem příkladu je to purchase_date sloupec.)

Těmito argumenty mohou být hodnoty date/datetime, výrazy vracející hodnoty date/datetime nebo sloupce datového typu datetime nebo date.

Tato funkce odečte počáteční datum od koncového data a vrátí počet dní jako celé číslo. V našem příkladu máslo byl zakoupen dne „2018-07-30“, ale jeho datum expirace bylo „2019-08-10“; po zakoupení se dal jíst 376 dní. Všimněte si, že jogurt byl zakoupen jako zastaralý produkt:rozdíl ve dnech je -1 a datum nákupu je pozdější než datum expirace.


  1. Jak AKTUALIZOVAT jeden sloupec pomocí jiného sloupce v jiné tabulce? Chyba SQL:ORA-00933:Příkaz SQL nebyl správně ukončen

  2. Funkce SUM() na serveru SQL Server

  3. Aktualizace dat Salesforce pomocí kurzoru SQL Server

  4. Rozdíl mezi SELECT INTO a INSERT INTO v MySQL