ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Что такое dateiff в MySQL

Что такое dateiff в MySQL

MySQL – одна из самых популярных баз данных в мире. Независимо от отрасли, MySQL широко используется благодаря своим функциям. Это СУБД с открытым исходным кодом(система управления реляционными базами данных). Данные организованы в таблицы, которые могут быть связаны друг с другом. Он включает SQL для выполнения различных действий с базой данных.

В этой статье мы рассмотрим одну из таких функций. Он продемонстрирует, как использовать функцию DATEDIFF в MySQL.

 

DATEDIFF() в SQL

Функция DATEDIFF доступна как часть языка запросов SQL. В MySQL функция DATEDIFF() принимает две даты в качестве входных данных, вычисляет разницу и возвращает количество дат между двумя датами.

Вот как выглядит базовая структура функции.

$DATEDIFF( выражение_1; выражение_2 )

 

Здесь:

 

Выражение может иметь любой из следующих форматов.

 

Однако в стандартном SQL DATEDIFF() немного отличается. Он также поддерживает дополнительный параметр для указания части даты, над которой нужно работать.

$DATEDIFF(date_part, выражение_1, выражение_2)

 

Здесь, date_part: описывает, в какой части даты функция должна рассчитывать. По умолчанию установлено значение дней. Однако он также поддерживает дополнительные значения. Эти значения date_part также имеют подходящие сокращения.

 

Функция 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.

Exit mobile version