MySQL – одна из самых популярных баз данных в мире. Независимо от отрасли, MySQL широко используется благодаря своим функциям. Это СУБД с открытым исходным кодом(система управления реляционными базами данных). Данные организованы в таблицы, которые могут быть связаны друг с другом. Он включает SQL для выполнения различных действий с базой данных.
В этой статье мы рассмотрим одну из таких функций. Он продемонстрирует, как использовать функцию DATEDIFF в MySQL.
DATEDIFF() в SQL
Функция DATEDIFF доступна как часть языка запросов SQL. В MySQL функция DATEDIFF() принимает две даты в качестве входных данных, вычисляет разницу и возвращает количество дат между двумя датами.
Вот как выглядит базовая структура функции.
$DATEDIFF( выражение_1; выражение_2 )
Здесь:
- выражение_1: первое выражение
- выражение_2: второе выражение
Выражение может иметь любой из следующих форматов.
- time
- date
- datetime
- datetime2
- smalldatetime
- datetimeoffset
Однако в стандартном SQL DATEDIFF() немного отличается. Он также поддерживает дополнительный параметр для указания части даты, над которой нужно работать.
$DATEDIFF(date_part, выражение_1, выражение_2)
Здесь, date_part: описывает, в какой части даты функция должна рассчитывать. По умолчанию установлено значение дней. Однако он также поддерживает дополнительные значения. Эти значения date_part также имеют подходящие сокращения.
- месяц(«mm» или «m»)
- год(«yy» или «yyyy»)
- четверть(«qq» или «q»)
- день(«dd» или «d»)
- неделя(wk или ww)
- день в году(«dy» или «у»)
- час(«hh»)
- минута(«mi» или «m»)
- секунда(«ss» или «s»)
- миллисекунда(«ms»)
- микросекунда(«mcs»)
- наносекунда(«ns»)
Функция DATEDIFF() также имеет ограничение диапазона. Расчетное значение разницы дат должно находиться в диапазоне целых чисел(от -2 147 483 647 до 2 147 483 648).
Использование DATEDIFF()
В этом разделе мы рассмотрим различные способы использования функции. Для демонстрации сервер MySQL настроен с помощью phpMyAdmin для простоты использования. Ознакомьтесь с этим руководством по настройке phpMyAdmin в Ubuntu.
Основное использование
На вкладке SQL выполните следующий запрос.
$ SELECT DATEDIFF('2090-10-11', '2020-10-10') AS 'Result';
Как видно из выходных данных, разница между указанными датами составляет 25568 дней.
По сравнению с более ранней датой
Что, если второе свидание было позже первого? Поменяйте местами значения и проверьте их.
$ SELECT DATEDIFF('2020-10-10', '2090-10-11') AS 'Result';
Как мы видим, он по-прежнему показывает 25568 дней. Однако значение отрицательное. При реализации этой функции в любом скрипте/запросе SQL необходимо помнить об этом важном различии.
Значения даты и времени
Функция DATEDIFF() также принимает в качестве параметра значения datetime. Ожидается, что значения времени будут в 24-часовом формате.
$ SELECT DATEDIFF('2090-10-11 23:59:59', '2020-10-10 00:00:00') AS 'Result_1';
$ SELECT DATEDIFF('2090-10-11 00:00:00', '2020-10-10 23:59:59') AS 'Result_2';
Обратите внимание, что дополнительное значение времени не влияет на результат расчета. Функция фокусируется только на дате.
Работа с неправильными значениями даты
Если значения даты неверны, то DATEDIFF() вернет значение NULL. Для демонстрации введите недопустимую дату в любой из параметров.
$ SELECT DATEDIFF('2099-99-99', '2020-20-20') AS 'Result'
Как и ожидалось, возвращаемое значение – ПУСТО(NULL).
Объединение DATEDIFF() с CURDATE()
Функция CURDATE() возвращает текущую дату машины. Не требует параметров. Узнайте больше об использовании CURDATE() для вставки текущей даты и времени в MySQL.
Используя CURDATE(), мы можем найти разницу между текущей и запланированной датой. Например, давайте сравним текущую дату с днем в прошлом.
$ SELECT DATEDIFF(CURDATE(), '1980-10-10') AS 'Result'
$ SELECT DATEDIFF('2077-01-01', CURDATE()) AS 'Result'
Обратите внимание, что есть дополнительные функции, например CURRENT_DATE(), которые действуют так же, как CURDATE(). В ситуациях их можно поменять местами.
$ SELECT DATEDIFF(CURRENT_DATE(), '1980-10-10') AS 'Result'
Использование DATEDIFF() с таблицами
До сих пор мы реализовали простые команды DATEDIFF(), чтобы продемонстрировать его использование. Пришло время воплотить это в жизнь.
Мы взяли образец базы данных, содержащий различную информацию об определенной компании и ее сотрудниках для демонстрации. Образец базы данных доступен прямо здесь. Мы выберем имена и фамилии сотрудников из этой базы данных и узнаем, сколько времени они проработали до сих пор.
$ SELECT first_name, last_name, DATEDIFF(CURDATE(), hire_date) AS 'days worked' FROM employees;
Последние мысли
Эта статья успешно демонстрирует использование функции DATEDIFF() в MySQL. Он вычисляет разницу между двумя датами и возвращает значение в виде количества дней. Все демонстрации помогают понять рабочий процесс функции DATEDIFF.