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.
Давайте сделаем дату и время в приведенной выше таблице более читабельными. Давайте напишем запрос, который отображает номер автобуса, название, начальное и конечное местоположение, дату отправления и время отправления в 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» всегда вызывает недоумение у тех, кто мало работал с базами данных.
- MySQL
- формат даты и времени
- iso8601
- rfc2822
Литералы даты и времени 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 .