Spec-Zone.ru › MariaDB

ВРЕМЯ

Синтаксис

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 |
+-----------+

См. также

  • Требования к хранению типов данных
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется заранее компанией MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/time/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API