Резюме : в этой статье вы узнаете, как запрашивать данные, соответствующие сегодняшней дате в MySQL, с помощью встроенных функций даты.
Получение сегодняшней даты в MySQL с использованием встроенных функций даты
Иногда вам может потребоваться запросить данные из таблицы, чтобы получить строки со столбцом даты на сегодняшний день, например:
SELECT column_list FROM table_name WHERE expired_date = today;
Чтобы получить сегодняшнюю дату, вы используете функцию CURDATE() следующим образом:
mysql> SELECT CURDATE() today; +------------+ | today | +------------+ | 2020-03-12 | +------------+ 1 row in set (0.00 sec)
Или вы можете получить часть даты из текущего времени, возвращенного функцией NOW():
mysql> SELECT DATE(NOW()) today; +------------+ | today | +------------+ | 2020-03-12 | +------------+ 1 row in set (0.00 sec)
Таким образом, запрос должен измениться на:
SELECT column_list FROM table_name WHERE expired_date = CURDATE();
Если столбец expired_date содержит часть даты и времени, следует использовать функцию DATE(), чтобы извлечь только часть даты и сравнить ее с текущей датой:
SELECT column_list FROM table_name WHERE DATE(expired_date) = CURDATE();
Создание вашей хранимой функции MySQL
Если вы часто используете эту функцию CURDATE() в своих запросах и хотите заменить ее на функцию today(), чтобы сделать запросы более читабельными, вы можете создать свою собственную хранимую функцию с именем today() следующим образом:
DELIMITER $$ CREATE FUNCTION today() RETURNS DATE BEGIN RETURN CURDATE(); END$$ DELIMITER ;
Теперь вы можете использовать созданную вами функцию today() следующим образом:
mysql> SELECT today(); +------------+ | today() | +------------+ | 2020-03-12 | +------------+ 1 row in set (0.00 sec)
Как насчет завтра? Это должно быть так просто, как:
mysql> SELECT today() + interval 1 day Tomorrow; +------------+ | Tomorrow | +------------+ | 2017-07-09 | +------------+ 1 row in set (0.00 sec)
И вчерашний день также прост:
mysql> SELECT today() - interval 1 day Yesterday; +------------+ | Yesterday | +------------+ | 2017-07-07 | +------------+ 1 row in set (0.00 sec)
Из этой статье вы узнали, как получить сегодняшнюю дату в MySQL, используя встроенную функцию даты. Вы также узнали, как разработать свою собственную функцию, используя хранимую функцию в MySQL.