Лого

Дата и время в MySQL

17.09.2024

MySQL предоставляет несколько типов данных для хранения интересующих нас значений. Каждый из них имеет свои особенности и форматы. Чуть более подробная информация будет ниже в заметке.

DATE

Тип данных используется для хранения только даты в формате 'YYYY-MM-DD'. А вот живой пример - '2020-02-15'.

Форматы вставки

  • 'YYYY-MM-DD'
  • 'YY-MM-DD'
  • 'YYYYMMDD'
  • 'YYMMDD

При вставке данных в столбец БД допускается использовать различные символы-разделители. Например, 'YYYY@MM@DD'.

DATETIME

Этот тип хранит вместе с датой еще и время в формате 'YYYY-MM-DD HH-MI-SS'.

Форматы вставки

  • 'YYYY-MM-DD HH:MI:SS'
  • 'YY-MM-DD HH-MI-SS'
  • 'YYYYMMDDHHMISS'
  • 'YYMMDDHHMISS'

Ты спросишь про часовые пояса. Они не влияют на отображение времени. Время будет показано так, как было сохранено.

TIMESTAMP

Удивительно, но данный тип также хранит дату и время. Но есть нюанс. Он учитывает текущий часовой пояс при выборке данных. В самой БД информация хранится по нулевому часовому поясу аля UTC.

TIME

Здесь только время хранится. Формат - 'HH:MI:SS'. Кстати, если часы превышают 24, то они могут быть записаны как 'HHH:MI:SS'.

YEAR

Тип YEAR предназначен для хранения года в формате 'YYYY', например, 2023.

Дополнительные функции

В MySQL умные дядьки придумали функции разные. Например, DATE_FORMAT() - позволит тебе изменить отображение даты. Берешь различные спецификаторы формата (%Y, %m, %d) и делаешь из них конфетку.


                        SELECT DATE_FORMAT('2023-12-01', '%d-%m-%Y');
                    

Выведет дату в виде '01-12-2023'. Там еще разные бывают функции, но я их сейчас рассматривать не хочу. Может быть позже.