Spec-Zone .ru
спецификации, руководства, описания, API
|
Перед MySQL 5.6.4 ограничиваются экземпляры, в котором часть долей секунды разрешается во временных значениях. Запаздывающая дробная часть допустима в контекстах, таких как литеральные значения, и в параметрах или возвращаемых значениях от некоторых временных функций. Пример:
mysql> SELECT MICROSECOND('2010-12-10
14:12:09.019473');
+-------------------------------------------+| MICROSECOND('2010-12-10 14:12:09.019473') |+-------------------------------------------+| 19473 |+-------------------------------------------+
Однако, когда MySQL хранит значение в столбец любого временного типа данных, он отбрасывает любую дробную часть и не хранит это.
MySQL 5.6.4 и разворачивает поддержку долей секунды 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.)
Функции, которые берут временные параметры, принимают значения с долями секунды.
Возвращаемые значения от временных функций включают доли секунды как соответствующие. Например, NOW()
без
параметра возвращает текущую дату и время без дробной части, но берет дополнительный параметр от 0 до 6,
чтобы определить, что возвращаемое значение включает часть долей секунды этого много цифр.
Синтаксис для временных литералов производит временные значения: DATE '
, str
'TIME
'
, и str
'TIMESTAMP '
, и эквиваленты синтаксиса ODBC. Получающееся
значение включает запаздывающую часть долей секунды если определено. Ранее, временное ключевое слово
типа было проигнорировано и эти конструкции, произведенные строковое значение. См. Стандартный
SQL и Литералы Даты и Времени ODBCstr
'
В некоторых случаях ранее принятый синтаксис может привести к различным результатам. Следующие элементы указывают, где существующий код, возможно, должен быть изменен, чтобы избежать проблем:
Некоторые выражения приводят к результатам, которые отличаются от предыдущих
результатов. Примеры: timestamp
системная переменная возвращает значение,
которое включает дробную часть микросекунд, а не целое число. Функции, которые возвращают результат,
который включает текущее время (такой как CURTIME()
, SYSDATE()
, или UTC_TIMESTAMP()
) интерпретируйте параметр как fsp
значение и возвращаемое значение включают часть долей
секунды этого много цифр. Ранее, эти функции, разрешенные параметр, но проигнорированный это.
TIME
значения преобразовываются в DATETIME
добавляя время к текущей дате. (Это означает, что часть даты
результата отличается от текущей даты, если временная стоимость вне диапазона от '00:00:00'
к '23:59:59'
.) Ранее, преобразование TIME
значения к DATETIME
было ненадежно. См. Раздел
11.3.7, "Преобразование Между Типами Даты и Времени".
TIMESTAMP(
был разрешен в старых версиях MySQL, но N
)N
был дисплей точность
долей секунды, а не width. Поддержка этого поведения была удалена в MySQL 5.5.3, таким образом,
приложения, которые разумно современны, не должны подвергнуться этой проблеме. Иначе, код должен быть
переписан.