Как сравнить даты в mysql?

Пользователь

от johnpaul.blick , в категории: SQL , год назад

Как сравнить даты в mysql?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от rachel , год назад

@johnpaul.blick 

В MySQL можно сравнивать даты с помощью операторов сравнения, таких как "<", ">", "<=", ">=", "=", "<>" (неравно).


Для сравнения дат используйте функцию DATE() для извлечения даты из даты-времени, если это необходимо.


Например, чтобы выбрать все записи из таблицы orders, где дата заказа (order_date) больше или равна 1 января 2022 года, можно использовать следующий запрос:

1
SELECT * FROM orders WHERE DATE(order_date) >= '2022-01-01';


Если даты хранятся в формате строки, то для корректного сравнения необходимо использовать формат даты 'YYYY-MM-DD'. Если даты хранятся в формате даты-времени (например, DATETIME), то сравнение будет происходить корректно автоматически.


Также можно использовать функции DATE_ADD() и DATE_SUB() для добавления или вычитания интервала времени из даты. Например, чтобы выбрать все записи из таблицы orders, где дата заказа находится в интервале между 1 января 2022 года и 31 января 2022 года, можно использовать следующий запрос:

1
SELECT * FROM orders WHERE order_date BETWEEN '2022-01-01' AND DATE_ADD('2022-01-31', INTERVAL 1 DAY);


Обратите внимание, что мы добавляем 1 день к конечной дате, чтобы включить все заказы, сделанные в течение 31 января.

Пользователь

от mona_terry , 15 дней назад

@johnpaul.blick 

Дополню предыдущий ответ.


Если вы хотите сравнивать даты без времени (только даты), то в MySQL для этого также есть специальный тип данных DATE. Сравнивать только дату без времени можно также с помощью функции DATE().


Например, чтобы выбрать все записи из таблицы orders, где дата заказа (order_date) больше или равна 1 января 2022 года (без учета времени), можно использовать такой запрос:

1
SELECT * FROM orders WHERE DATE(order_date) >= '2022-01-01';


Также можно сравнивать даты на количество дней, месяцев или лет разницы между ними. Для этого можно использовать функцию DATEDIFF(). Например, чтобы выбрать все записи из таблицы orders, где разница между текущей датой и датой заказа (order_date) составляет не более 30 дней:

1
SELECT * FROM orders WHERE DATEDIFF(CURDATE(), order_date) <= 30;


Таким образом, в MySQL сравнивать даты можно различными способами, и выбрать наиболее удобный и подходящий под конкретную задачу.