it-swarm.com.ru

Установка столбца в качестве метки времени в MySql Workbench?

Это может быть действительно элементарный вопрос, но я никогда раньше не создавал таблицу с TIMESTAMP(), и я не понимаю, что указывать в качестве параметров. Например, здесь: 

enter image description here

Я просто случайно добавил TIMESTAMP(20), но что здесь обозначает 20 в качестве параметра? Что нужно положить сюда? 

Я погуглил вопрос, но на самом деле ничего не придумал, так что ... В любом случае, я новичок в sql, поэтому любая помощь будет принята с благодарностью, спасибо !! 

12
ocean800

ПРАВКА

Начиная с MySQL 5.6.4, тип данных TIMESTAMP(n) указывает n (от 0 до 6) десятичных цифр точности в течение долей секунды.

До MySQL 5.6 MySQL не поддерживал дробные секунды, сохраняемые как часть типа данных TIMESTAMP.

Ссылка: https://dev.mysql.com/doc/refman/5.6/ru/fractional-seconds.html


Нам не нужно указывать модификатор длины в TIMESTAMP. Мы можем просто указать TIMESTAMP.

Но имейте в виду, что первый столбец TIMESTAMP, определенный в таблице, подлежит автоматической инициализации и обновлению. Например:

create table foo (id int, ts timestamp, val varchar(2));

show create table foo; 

CREATE TABLE `foo` (
`id` INT(11) DEFAULT NULL,
`ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`val` VARCHAR(2) DEFAULT NULL
) 

То, что идет в паренах после типа данных, зависит от того, что это за тип, но для некоторых типов это модификатор длины.

Для некоторых типов данных модификатор длины влияет на максимальную длину значений, которые могут быть сохранены. Например, VARCHAR(20) позволяет хранить до 20 символов. И DECIMAL(10,6) допускает числовые значения с четырьмя цифрами перед десятичной запятой и шестью после, и эффективный диапазон от -9999,999999 до 9999,999999.

Для других типов модификатор длины не влияет на диапазон значений, которые могут быть сохранены. Например, INT(4) и INT(10) оба являются целочисленными, и оба могут хранить полный диапазон значений для допустимого для целочисленного типа данных.

То, что делает модификатор длины в этом случае, просто информационное. По сути, это определяет рекомендуемую ширину дисплея. Клиент может использовать это, чтобы определить, сколько места зарезервировать в строке для отображения значений из столбца. Клиент не обязан это делать, но эта информация доступна.

ПРАВКА 

Модификатор длины больше не принимается для типа данных TIMESTAMP. (Если вы используете действительно старую версию MySQL и она принята, она будет проигнорирована.)

8
spencer7593

Это точность, мой друг, если вы укажете, например, (2) в качестве параметра, вы получите дату с точностью, например: 2015-12-29 00:00:00 . 00 , кстати, максимум значение 6.

6
Diego Nieto

Этот синтаксис взят из старой версии MySQL до 4.1. Он был полностью удален из 5.5 https://dev.mysql.com/doc/refman/5.0/ru/upgrading-from-previous-series.html

Так что нет смысла указывать здесь ширину, так как ее можно игнорировать. Какую версию вы используете?

2
Kim Ryan

MySQL 5.7, кажется, поддерживает этот синтаксис. Переданный аргумент - точность. TIMESTAMP (3) позволит с точностью до миллисекунды. 6 - это максимальная допустимая точность.

ссылка: http://dev.mysql.com/doc/refman/5.7/ru/datetime.html

1
Limabean