Spec-Zone.ru › MySQL 5.7

11.2.7 Дробные секунды в значениях времени

MySQL поддерживает дробные секунды для значений TIME, DATETIME и TIMESTAMP с точностью до микросекунд (6 знаков):

  • Для определения столбца, включающего дробную часть секунды, используйте синтаксис type_name(fsp), где type_name является TIME, DATETIME или TIMESTAMP, а fsp — точность дробной части секунды. Например:

    CREATE TABLE t1 (t TIME(3), dt DATETIME(6));
    

    Значение fsp, если указано, должно находиться в диапазоне от 0 до 6. Значение 0 означает, что дробная часть отсутствует. Если значение опущено, то точность по умолчанию составляет 0. (Это отличается от стандартного значения SQL 6 для совместимости с предыдущими версиями MySQL.)

  • Вставка значения TIME, DATE или TIMESTAMP с дробной частью секунды в столбец того же типа, но с меньшим количеством знаков дробной части, приводит к округлению. Рассмотрим таблицу, созданную и заполненную следующим образом:

    CREATE TABLE fractest( c1 TIME(2), c2 DATETIME(2), c3 TIMESTAMP(2) );
    INSERT INTO fractest VALUES
    ('17:51:04.777', '2018-09-08 17:51:04.777', '2018-09-08 17:51:04.777');
    

    Временные значения вставляются в таблицу с округлением:

    mysql> SELECT * FROM fractest;
    +-------------+------------------------+------------------------+
    | c1          | c2                     | c3                     |
    +-------------+------------------------+------------------------+
    | 17:51:04.78 | 2018-09-08 17:51:04.78 | 2018-09-08 17:51:04.78 |
    +-------------+------------------------+------------------------+
    

    При таком округлении не выдается предупреждение или ошибка. Это поведение соответствует стандарту SQL и не зависит от настройки серверной переменной sql_mode.

  • Функции, принимающие временные аргументы, принимают значения с дробными секундами. Результаты временных функций включают дробные секунды, если это необходимо. Например, NOW() без аргумента возвращает текущую дату и время без дробной части, но принимает необязательный аргумент от 0 до 6, чтобы указать, что возвращаемое значение включает дробную часть секунды с указанным количеством знаков.

  • Синтаксис временных литералов создает временные значения: DATE 'str', TIME 'str' и TIMESTAMP 'str', а также эквиваленты синтаксиса ODBC. Результирующее значение включает заключительную дробную часть секунды, если она указана. Раньше ключевое слово временного типа игнорировалось, и эти конструкции создавали строковое значение. См. Стандартные SQL и ODBC литералы дат и времени

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/fractional-seconds.html

Spec-Zone.ru

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