MySQL – это популярная и простая в использовании система управления базами данных, которая поставляется с множеством функций и гибкостью, подходящей для широкого спектра сценариев использования. Одной из таких функций является тип данных даты MySQL, который используется для генерации и хранения значений даты.
В этой статье мы проведем вас через тип данных даты MySQL и покажем, как вы можете фильтровать данные по диапазону дат.
Основы
Дата MySQL – это тип данных, который хранит значения даты в форме YYYY-MM-DD. Тип даты использует 3 байта для хранения записи даты. Тип даты MySQL варьируется от 1000-01-0 до 9999-12-21.
MySQL поставляется с множеством функций для генерации и управления значениями даты. Однако мы не будем углубляться в них из-за объема учебника. Прочтите документацию, чтобы узнать больше.
Давайте рассмотрим простой пример, чтобы показать, как хранить значения даты в MySQL.
CREATE DATABASE IF NOT EXISTS date_db USE date_db; CREATE TABLE date_records( id INT AUTO_INCREMENT PRIMARY KEY, timetable DATE NOT NULL ); INSERT INTO date_records(timetable) VALUES('2021-06-06'), ('2020-01-20'), ('2030-03-03');
Теперь мы можем выбрать значения из таблицы как:
select * from date_records; +----+------------+ | id | timetable | +----+------------+ | 1 | 2021-06-06 | | 2 | 2020-01-20 | | 3 | 2030-03-03 | +----+------------+ 3 rows in set (0.00 sec)
Вы можете использовать функции MySQL для добавления дополнительных значений даты в таблицу.
Как отфильтровать диапазон дат?
Давайте теперь перейдем к теме: «Как фильтровать в пределах диапазона дат?»
MySQL умен и очень интуитивно понятен. Вы можете использовать обычные операторы сравнения для фильтрации данных в пределах определенного диапазона дат.
Давайте возьмем образец базы данных, доступный на указанном ниже ресурсе:
https://dev.mysql.com/doc/index-other.html
В таблице платежей мы можем отфильтровать даты платежей за определенный период.
Например, чтобы отфильтровать платежи в диапазоне от «2005-05-25 11:30:37» до «2005-07-30 19:23:44», мы можем использовать следующий запрос:
SELECT payment_id, customer_id, rental_id FROM payment WHERE payment_date BETWEEN '2005-05-25 11:30:37' AND '2005-07-30 19:23:44' LIMIT 10;
В приведенном выше примере должны быть возвращены столбцы, значения которых находятся в указанном диапазоне времени.
Другой пример – фильтрация значений до определенной даты. В этом случае мы можем использовать оператор меньше или равно как:
SELECT payment_id, customer_id, rental_id FROM payment WHERE payment_date <= '2005-05-25 11:30:37' LIMIT 10;
В приведенном выше примере запрос возвращает все значения в диапазоне «2005-05-25 11:30:37» и ниже.
Резюме
MySQL позволяет использовать операторы сравнения для фильтрации диапазонов дат, как и для других типов, таких как целые числа.