Фильтрация данных по значению даты — обычное явление при работе с базами данных. Например, это может позволить нам получать данные за определенный период времени, агрегировать результаты на основе заданной даты, определять закономерности тенденций с течением времени и выполнять другие операции, связанные со временем.
Поэтому это важный навык для любого разработчика баз данных. SQL предоставляет нам различные инструменты для фильтрации дат в данном наборе данных.
Присоединяйтесь к нам в этом посте, поскольку мы исследуем различные методы и приемы, которые мы можем использовать для фильтрации дат в мире SQL.
Предпосылки:
Прежде чем мы углубимся в практические примеры и приложения, давайте разберем, что вам для этого нужно.
В этом посте мы постараемся придерживаться методов, применимых практически ко всем базам данных SQL. Однако в демонстрационных целях мы используем MySQL версии 8 с образцом базы данных Sakila.
Однако вы можете свободно загружать и использовать любой набор данных, который пожелаете. Мы обязательно укажем, может ли предоставленный метод работать в других базах данных, и предоставим альтернативу, если таковая имеется.
Фильтровать конкретную дату
Самая базовая операция фильтрации по дате — это когда нам нужно получить запись или несколько записей за определенную дату.
В таком случае мы можем использовать предложение WHERE, за которым следует столбец даты и фактическое значение даты, которое мы хотим получить.
Например, предположим, что мы хотим найти записи об аренде, произошедшие 24 мая 2005 г. Мы можем выполнить запрос следующим образом:
ВЫБИРАТЬ *ОТ аренда
ГДЕ rental_date = '2005-05-24 23:03:39' ;
В этом случае мы указываем дату, которую хотим отфильтровать, как значение временной метки. Это связано с тем, что в столбце «rental_date» значения хранятся как отметка времени.
Фильтрация диапазона дат
Вторая распространенная операция — фильтрация данных на основе определенного диапазона дат. Например, предположим, что мы хотим получить данные об аренде, произошедшей в период с мая 2005 г. по июнь 2005 г.
Мы можем запустить запрос следующим образом:
ВЫБИРАТЬ*
ОТ
аренда
ГДЕ
rent_date МЕЖДУ '2005-04-01 00:00:00' И '2005-06-01 00:00:00' ;
В этом случае мы используем оператор AND для объединения двух значений. Предложение WHERE используется там, где любое значение из столбца «rental_date» должно находиться между двумя диапазонами.
Пример вывода выглядит следующим образом:
Фильтрация компонента даты
В других случаях вместо использования диапазона дат с использованием литеральных значений мы можем извлечь конкретные компоненты даты из значения и отфильтровать их на основе этого.
Например, вместо указания 01 апреля 2005 г. и 01 июня 2005 г. мы можем извлечь май месяц и отфильтровать любые данные, находящиеся в пределах этого месяца.
В MySQL для достижения этой цели мы можем использовать такую функцию, как функция MONTH(), как показано в следующем примере:
ВЫБИРАТЬ*
ОТ
аренда
ГДЕ
МЕСЯЦ ( аренда_дата ) '=' 5 ;
В этом случае МЕСЯЦ(rental_date) извлекает часть месяца из даты. Затем мы можем использовать это значение для фильтрации, где значение равно 5, май.
Заключение
В этом руководстве мы узнали об одной из самых фундаментальных и распространенных задач в SQL, где мы фильтруем данные на основе значения даты. Мы научились извлекать различные компоненты из даты и использовать их для фильтрации даты и многого другого.