ВРЕМЯ
Синтаксис
TIME [(<microsecond precision>)]
Описание
Время. Диапазон значений — от '-838:59:59.999999' до '838:59:59.999999'. Точность микросекунд ('-838:59:59.999999') может быть от 0 до 6; если не указано, используется 0. Микросекунды доступны начиная с MariaDB 5.3.
MariaDB отображает значения типа TIME в формате 'HH:MM:SS.ssssss', но допускает присвоение времени в более свободных форматах, включая 'D HH:MM:SS', 'HH:MM:SS', 'HH:MM', 'D HH:MM', 'D HH', 'SS' или 'HHMMSS', а также позволяет опускать ведущие нули при наличии разделителя, например '3:9:10'. Подробности см. в разделе литералы дат и времени.
MariaDB 10.1.2 ввела опцию --mysql56-temporal-format, по умолчанию включенную, которая позволяет MariaDB хранить значения TIMEs в том же низкоуровневом формате, что и MySQL 5.6.
Внутренний формат
В MariaDB 10.1.2 был введён новый временной формат из MySQL 5.6, который изменяет работу столбцов TIME, DATETIME и TIMESTAMP на низком уровне. Эти изменения позволяют этим временным типам данных иметь дробные части и отрицательные значения. Вы можете отключить эту функцию, используя системную переменную mysql56_temporal_format.
Таблицы, которые содержат значения TIMESTAMP и были созданы в более старой версии MariaDB или при отключенной системной переменной mysql56_temporal_format, продолжают хранить данные в формате старого типа.
Для обновления столбцов таблиц со старого формата на новый, выполните оператор ALTER TABLE... MODIFY COLUMN, который изменяет столбец на *тот же* тип данных. Эта операция может понадобиться, если вы хотите экспортировать табличный пространство и импортировать его на сервер, где mysql56_temporal_format=ON установлено (см. MDEV-15225).
Например, если в вашей таблице есть столбец TIME:
SHOW VARIABLES LIKE 'mysql56_temporal_format'; +-------------------------+-------+ | Variable_name | Value | +-------------------------+-------+ | mysql56_temporal_format | ON | +-------------------------+-------+ ALTER TABLE example_table MODIFY ts_col TIME;
При выполнении оператора ALTER TABLE MariaDB конвертирует данные со старого временного формата на новый.
В случае, если у вас есть несколько таблиц и столбцов, использующих временные типы данных, которые вы хотите переключить на новый формат, убедитесь, что системная переменная включена, а затем выполните дамп и восстановление с использованием mariadb-dump. Столбцы, использующие соответствующие временные типы данных, восстанавливаются с использованием нового временного формата.
Начиная с MariaDB 10.5.1, столбцы со старыми временными форматами отмечаются комментарием /* mariadb-5.3 */ в выводе операторов SHOW CREATE TABLE, SHOW COLUMNS, DESCRIBE, а также в столбце COLUMN_TYPE таблицы INFORMATION_SCHEMA.COLUMNS.
SHOW CREATE TABLE mariadb5312_time\G
*************************** 1. row ***************************
Table: mariadb5312_time
Create Table: CREATE TABLE `mariadb5312_time` (
`t0` time /* mariadb-5.3 */ DEFAULT NULL,
`t6` time(6) /* mariadb-5.3 */ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
Обратите внимание, что столбцы с текущим форматом не отмечаются комментарием.
Примеры
INSERT INTO time VALUES ('90:00:00'), ('800:00:00'), (800), (22), (151413), ('9:6:3'), ('12 09');
SELECT * FROM time;
+-----------+
| t |
+-----------+
| 90:00:00 |
| 800:00:00 |
| 00:08:00 |
| 00:00:22 |
| 15:14:13 |
| 09:06:03 |
| 297:00:00 |
+-----------+
См. также
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/time/