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 ', а также эквиваленты синтаксиса ODBC. Результирующее значение включает заключительную дробную часть секунды, если она указана. Раньше ключевое слово временного типа игнорировалось, и эти конструкции создавали строковое значение. См. Стандартные SQL и ODBC литералы дат и времениstr'
© 2025 Oracle
Licensed under the GPLv2 License.