Поиск по сайту:

Каждый диктатор начинает с того, что упрощает (Э.М. Ремарк).

Что такое dateiff в MySQL

3 мин для чтения
FavoriteLoadingДобавить в избранное
7 ноября 2021
Что такое dateiff в MySQL
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 дней.

Читать  Как создать перечисления. Использование объектов Enum в Python

 

По сравнению с более ранней датой

Что, если второе свидание было позже первого? Поменяйте местами значения и проверьте их.

$ 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.

Читать  Как установить KVM на Ubuntu 20.04

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:
5 1 голос
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Читайте также

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close