Problem:
Chcesz poznać różnicę w dniach między dwiema datami w bazie danych MySQL.
Przykład:
Nasza baza danych zawiera tabelę o nazwie food
z danymi w kolumnach id
, name
, purchase_date
i expiration_date
.
id | imię | data_zakupu | data_ważności |
---|---|---|---|
1 | chleb | 2019-07-20 | 2019-08-22 |
2 | masło | 2018-07-30 | 2019-08-10 |
3 | mleko | 2019-01-12 | 2019-01-13 |
4 | jogurt | 25.02.2019 | 2019-02-24 |
Dla każdego produktu spożywczego zdobądźmy nazwę produktu i liczbę dni między datą jego ważności a datą zakupu.
Rozwiązanie:
Użyjemy DATEDIFF()
funkcjonować. Oto zapytanie, które możesz napisać:
SELECT name, DATEDIFF(expiration_date, purchase_date) AS days FROM food;
Oto wynik zapytania:
nazwa | dni |
---|---|
chleb | 33 |
masło | 376 |
mleko | 1 |
jogurt | -1 |
Dyskusja:
Użyj DATEDIFF()
funkcja do pobierania liczby dni między dwiema datami w bazie danych MySQL. Ta funkcja przyjmuje dwa argumenty:
- Data zakończenia. (W naszym przykładzie jest to
expiration_date
kolumna.) - Data rozpoczęcia. (W naszym przykładzie jest to
purchase_date
kolumna.)
Te argumenty mogą być wartościami daty/daty/godziny, wyrażeniami zwracającymi wartości daty/daty/godziny lub kolumnami typu data/godzina lub data.
Ta funkcja odejmuje datę początkową od daty końcowej i zwraca liczbę dni jako liczbę całkowitą. W naszym przykładzie masło został zakupiony w dniu „2018-07-30”, ale jego data ważności to „2019-08-10”; po zakupie można go było spożywać przez 376 dni. Zauważ, że jogurt został zakupiony jako przestarzały produkt:różnica w dniach wynosi -1, a data zakupu jest późniejsza niż data ważności.