11.2 Типы данных даты и времени

версия 8.0

5.7
5.6

8,0 Японский
5.6 Японский

11.2.1 Синтаксис типа данных даты и времени
11.2.2 Типы DATE, DATETIME и TIMESTAMP
11.2.3 Тип TIME
11.2.4 Автоматизация и инициализация типа YEAR
3 11.2.5 Обновление для TIMESTAMP и DATETIME
11.2.6 Доли секунд в значениях времени
11.
2.7 Преобразование между типами даты и времени
11.2.8 Двузначное число лет в датах

Типы данных даты и времени для представления временных значений: ДАТА , ВРЕМЯ , ДАТАВРЕМЯ , TIMESTAMP и ГОД . Каждый временной тип имеет диапазон допустимых значений, а также «нулевое» значение, может использоваться, когда вы указываете недопустимое значение, которое MySQL не может представлять. TIMESTAMP и Типы DATETIME имеют специальные поведение автоматического обновления, описанное в Раздел 11.2.5, «Автоматическая инициализация и обновление для TIMESTAMP и DATETIME».

Для получения информации о требованиях к хранению временных данных см. раздел 11.7, «Требования к хранению типов данных».

Описание функций, работающих с временными значениями, см. Раздел 12. 7, «Функции даты и времени».

Помните об этих общих соображениях при работе с датой. и типы времени:

  • MySQL извлекает значения для данного типа даты или времени в стандартный выходной формат, но он пытается интерпретировать различные форматов для входных значений, которые вы предоставляете (например, когда вы указываете значение, которое будет присвоено или сравнено с датой или тип времени). Для описания разрешенных форматов для типы даты и времени, см. Раздел 9.1.3, «Литералы даты и времени». Ожидается, что вы указываете допустимые значения. Непредсказуемые результаты могут быть получены, если вы используете значения в других форматах.

  • Хотя MySQL пытается интерпретировать значения в нескольких форматах, части даты всегда должны указываться в порядке год-месяц-день (для например, '98-09-04' ), а не в обычно используются порядки месяц-день-год или день-месяц-год в другом месте (например,

    '09-04-98' , '04-09-98' ). Чтобы преобразовать строки в другие заказы в порядке год-месяц-день, STR_TO_DATE() функция может быть полезный.

  • Даты, содержащие двузначные значения года, неоднозначны, потому что века неизвестно. MySQL интерпретирует двузначные значения года, используя эти правила:

    См. также Раздел 11.2.8, «Двузначное обозначение года в дате».

  • Преобразование значений из одного временного типа в другой происходит по правилам в Раздел 11.2.7, «Преобразование между типами даты и времени».

  • MySQL автоматически преобразует значение даты или времени в число если значение используется в числовом контексте и наоборот.

  • По умолчанию, когда MySQL встречает значение даты или времени тип, который находится вне диапазона или иным образом недействителен для типа, он преобразует значение в «нулевое» значение для тот тип.

    Исключением является то, что вне диапазона ВРЕМЯ значения обрезаются до соответствующую конечную точку ВРЕМЯ диапазон.

  • Установив режим SQL в соответствующее значение, вы можете укажите более точно, какие даты вы хотите, чтобы MySQL поддерживать. (См. Раздел 5.1.11, «Режимы SQL сервера».) Вы можете получить принять определенные даты, такие как '2009-11-31' , включив ALLOW_INVALID_DATES SQL режим. Это полезно, когда вы хотите сохранить «возможно неправильное» значение, которое указал пользователь (например, в веб-форме) в базе данных для дальнейшей обработки. Под этом режиме MySQL проверяет только то, что месяц находится в диапазоне от 1 до 12 и что день находится в диапазоне от 1 до 31.

  • MySQL позволяет вам хранить даты, где день или месяц и день равен нулю в DATE или ДАТАВРЕМЯ столбец. это полезно для приложений, которым необходимо хранить даты рождения, для которых вы может не знать точную дату. В этом случае вы просто сохраняете дата как

    '2009-00-00' или '2009-01-00' . Однако с такими датами, как эти, вы не должны ожидать получения правильных результатов для функции, такие как DATE_SUB() или DATE_ADD() , которые требуют полные даты. Чтобы запретить нулевые части месяца или дня в датах, включить NO_ZERO_IN_DATE режим.

  • MySQL позволяет вам хранить «нулевое» значение '0000-00-00' как «фиктивный свидание.» В некоторых случаях это удобнее, чем с использованием значений

    NULL и использует меньше данных и индексное пространство. Чтобы запретить '0000-00-00' , включить NO_ZERO_DATE режим.

  • «Нулевые» значения даты или времени, используемые через Connector/ODBC автоматически преобразуются в NULL , так как ODBC не может обрабатывать такие ценности.

В следующей таблице показан формат «нуля». значение для каждого типа. «Нулевые» значения являются особыми, но вы можете хранить или ссылаться на них явно, используя значения показано в таблице. Вы также можете сделать это, используя значения

'0' или 0 , что проще написать. Для временных типов, которые включают часть даты ( ДАТА , ДАТАВРЕМЯ и TIMESTAMP ), использование этих значений может выдавать предупреждения или ошибки. Точное поведение зависит от того, если таковые имеются, строгого и NO_ZERO_DATE Режимы SQL включено; см. раздел 5.1.11, «Режимы SQL сервера».


НАЗАД ДОМ ВВЕРХ СЛЕДУЮЩИЙ

MySQL TIME_FORMAT() — MySQLCode

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

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

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

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


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

 

TIME_FORMAT(время, «формат»)

Язык кода: SQL (язык структурированных запросов) (sql)

7 где
  • 07 значение времени который необходимо отформатировать, и
  • «формат» — это формат, который нужно использовать. Это значение должно быть заключено в двойные кавычки.
  • «Формат» может быть одним из следующих или их комбинацией –

    • %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") AS Time;

    Язык кода: SQL (язык структурированных запросов) (sql)

    И вывод –

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

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

     

    ВЫБЕРИТЕ 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 Table

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

     

    SELECT Bus_No, Name, Start, End, ДАТА(Время отправления) КАК Дата, TIME_FORMAT(DepartureTime,"%r") AS Time FROM BusStop;

    Кодовый язык: SQL (Structured Query Language) (sql)

    Вывод –


    Заключение

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