MySQL TIME_FORMAT() — MySQLCode

Автор Кедар Гуле / 12 апреля 2021 г. 24 июня 2022 г.

В этом руководстве мы узнаем о функции MySQL TIME_FORMAT() . Значение времени в MySQL имеет формат «ЧЧ:ММ:СС» в 24-часовом формате.

Однако такое значение времени может быть трудночитаемым для некоторых людей, которые предпочитают 12-часовой формат, сопровождаемый AM/PM.

Некоторые люди вообще не хотят видеть значение секунд, они просто хотят видеть значение времени, которое показывает значение часов и минут. Вот где Функция TIME_FORMAT() вступает в игру.

Функция TIME_FORMAT() форматирует значение времени в указанном формате. Вы также можете использовать MySQL TIME_FORMAT() для значений даты и времени, однако это может привести к потере информации, поскольку TIME_FORMAT() вернет только отформатированное значение времени и полностью пропустит значение даты.


Синтаксис MySQL TIME_FORMAT()

 TIME_FORMAT(время, «формат»)  Язык кода: SQL (язык структурированных запросов) (sql)  

Где

  • «время» — значение времени, которое необходимо отформатировать, а
  • «формат» — используемый формат. Это значение должно быть заключено в двойные кавычки.

«Формат» может быть одним из следующих или их комбинацией –

  • %f – для отображения значения в микросекундах (от 000000 до 999999)
  • %H – для отображения только значения часа в 24-часовом формате (от 00 до 23)
  • %h – для отображения только значения часа в 12-часовом формате (от 00 до 12)
  • %I – для отображения только значения часов в 12-часовом формате (от 00 до 12)
  • %i – для отображения только значения минут (от 00 до 59)
  • %p – для отображения значения AM или PM
  • %r – для отображения времени в 12-часовом формате AM или PM (чч:мм:сс AM/PM)
  • %S – для отображения только значения секунд (от 00 до 59)
  • %s – для отображения только значение секунд (от 00 до 59)
  • %T – для отображения времени в 24-часовом формате (чч:мм:сс)

Примеры MySQL TIME_FORMAT()

Давайте начнем с простого примера. Давайте отформатируем значение времени — «15:06:22», чтобы отобразить его в 12-часовом формате ЧЧ:ММ:СС и отобразить значение AM/PM. Если мы посмотрим на возможные значения «формата», мы увидим, что формат «%r» соответствует нашим потребностям. Давайте напишем для него запрос, используя оператор SELECT и псевдонимы. Запрос –

 SELECT TIME_FORMAT('15:06:22', "%r") AS Time;  Язык кода: SQL (язык структурированных запросов) (sql)  

Вывод —

Отображение только значения AM/PM

Для значения времени – «15:06:22» отобразим только его значение AM или PM. Мы можем сделать это, используя формат «%p». Запрос –

 SELECT TIME_FORMAT('15:06:22', "%p") AS Time;  Язык кода: SQL (язык структурированных запросов) (sql)  

И вывод –

Использование комбинации форматов

Для значения времени – ’15:06:22′, давайте отобразим время в формате «ЧЧ:ММ AM/PM». Для этого нам понадобится комбинация параметров формата. Для значений часов мы можем использовать %H. Чтобы отобразить значение минут, мы будем использовать %i, а для значения AM/PM мы будем использовать %p. Мы укажем двоеточие между %H и %i. Вопрос —

 SELECT TIME_FORMAT('15:06:22', "%H:%i %p") КАК Время;  Язык кода: SQL (язык структурированных запросов) (sql)  

И вывод –

микросекунд С MySQL TIME_FORMAT()

Для значения времени – ’15:06:22′, давайте отобразим время в формат «ЧЧ:ММ:СС.сссссссс AM/PM». Для этого нам снова понадобится комбинация параметров формата. Для значений часов мы можем использовать %H. Чтобы отобразить значение минут, мы будем использовать %i. Чтобы отобразить значение секунд, мы будем использовать %s, а для микросекунд мы будем использовать %f. Для значения AM/PM мы будем использовать %p. Мы укажем двоеточие между %H, %i и %s и точку между %s и %f. Вопрос —

 SELECT TIME_FORMAT('15:06:22', "%H:%i:%s.%f %p") AS Time;  Язык кода: SQL (язык структурированных запросов) (sql)  

Вывод –

MySQL TIME_FORMAT() с CURTIME()

Далее воспользуемся функцией CURTIME() с MySQL TIME_FORMAT() . Мы будем отображать текущее время в 12-часовом формате «ЧЧ:ММ AM/PM». Запрос – 

 SELECT TIME_FORMAT(CURTIME(), "%h:%i %p") AS Time;  Язык кода: SQL (язык структурированных запросов) (sql)  

Вывод –

Работа с таблицами

Рассмотрим приведенную ниже таблицу BusStop.

BusStop Table

Давайте сделаем дату и время в приведенной выше таблице более читабельными. Давайте напишем запрос, который отображает номер автобуса, название, начальное и конечное местоположение, дату отправления и время отправления в 12-часовом формате «ЧЧ:ММ:СС AM/PM». Запрос для него —

 SELECT Bus_No, Name, Start, End,
ДАТА(Время отправления) КАК Дата,
TIME_FORMAT(DepartureTime,"%r") AS Time FROM BusStop;  Язык кода: SQL (Structured Query Language) (sql)  

И вывод –


Заключение

Форматирование значений времени является очень важной операцией в MySQL и широко используется во многих случаях использования, особенно когда мы должны сделать значение времени презентабельным для пользователя. Я настоятельно рекомендую вам попрактиковаться на нескольких примерах этой функции.


Ссылки

  • MySQL Официальная документация по TIME_FORMAT() функция.

Какое «формальное» название формата DATETIME в MySQL?

спросил

Изменено 1 год, 11 месяцев назад

Просмотрено 2к раз

Кто-нибудь знает официальное название формата даты YYYY-MM-DD HH:MM:SS , используемого MySQL DATETIME? Есть ли один? выглядит закрывает до ISO 8601, но он достаточно отличается, чтобы сломаться в большинстве приложений, если вы попытаетесь использовать их взаимозаменяемо.

Иногда мне приходится сослаться на этот конкретный формат в разговоре, но обращение к нему как к «формату DATETIME» всегда вызывает недоумение у тех, кто мало работал с базами данных.

Я привык к форматам дат, имеющим официальные названия и предельно формальные определения. (RFC 2822, кто-нибудь?) Итак, существует ли он?

  • MySQL
  • формат даты и времени
  • iso8601
  • rfc2822
5

Литералы даты и времени MySQL описаны в справочном руководстве. AFAICS, там не упоминается ни ISO, ни какое-либо другое имя.

Википедия, ISO 8601 показывает комбинированный формат даты и времени ISO, который имеет вид «2012-12-04T20:03» («ГГГГ-ММ-ДДЧЧ:ММ») и отличается от упомянутого формата даты и времени MySQL.

Таким образом, хотя это выглядит примерно как формат даты и времени ISO, я бы назвал его форматом MySQL или SQL.

2021

Ответ Олафа Дитше правильный, но старый (2012 г.) и немного неточный по состоянию на 2021 г. Согласно Википедии ISO 8601:

В соответствии с ISO 8601-1:2019 основным форматом является T[чч][мм][сс], а расширенный формат: T[чч]:[мм]:[сс]. В более ранних версиях T отсутствовал. (представляющее время) в обоих форматах.

Также по той же ссылке:

ISO 8601-1:2019 позволяет опускать букву T в расширенном формате , как в «13:47:30», но позволяет опустить букву T только в базовом формате когда нет риска двусмысленности с выражениями даты.


MySQL в своей документации упоминает «ISO» (без номера), в одной ссылке они упомянули, что формат ISO относится к ISO 9075, а не к ISO 8601. .

ISO 9075 — это в основном стандарты MySQL.

Кстати, ISO 8601 и RFC 3339 — это почти одно и то же (с точки зрения разработчиков). Если вам интересно, читайте.


Итог:

Формат даты и времени MySQL соответствует тому же формату ISO-8601 / RFC-3339 , хотя у MySQL есть собственный собственный стандарт ISO 9075. Таким образом, для формата даты и времени MySQL мы можем называть его как

любой из следующих:

  • ISO 8601 также известный как RFC 3339
  • Формат MySQL , также известный как ISO 9075 .