EDITAR
A partir do MySQL 5.6.4, tipo de dados
TIMESTAMP(n)
especifica n
(0 a 6) dígitos decimais de precisão para segundos fracionários. Antes do MySQL 5.6, o MySQL não suportava segundos fracionários armazenados como parte de um
TIMESTAMP
tipo de dados. Referência:https://dev.mysql.com/doc /refman/5.6/en/fractional-seconds.html
Não precisamos especificar um modificador de comprimento em um
TIMESTAMP
. Podemos apenas especificar TIMESTAMP
por si próprio. Mas esteja ciente de que o primeiro
TIMESTAMP
coluna definida na tabela está sujeita a inicialização e atualização automáticas. Por exemplo: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
)
O que vai nos parênteses após um tipo de dados depende de qual é o tipo de dados, mas para alguns tipos de dados, é um modificador de comprimento.
Para alguns tipos de dados, o modificador de comprimento afeta o comprimento máximo dos valores que podem ser armazenados. Por exemplo,
VARCHAR(20)
permite armazenar até 20 caracteres. E DECIMAL(10,6)
permite valores numéricos com quatro dígitos antes do ponto decimal e seis depois, e faixa efetiva de -9999,999999 a 9999,999999. Para outros tipos, o modificador de comprimento não afeta o intervalo de valores que podem ser armazenados. Por exemplo,
INT(4)
e INT(10)
são ambos inteiros e ambos podem armazenar o intervalo completo de valores permitidos para o tipo de dados inteiro. O que esse modificador de comprimento faz nesse caso é apenas informativo. Ele especifica essencialmente uma largura de exibição recomendada. Um cliente pode usar isso para determinar quanto espaço reservar em uma linha para exibir valores da coluna. Um cliente não precisa fazer isso, mas essa informação está disponível.
EDITAR
TIMESTAMP
tipo de dados. (Se você estiver executando uma versão muito antiga do MySQL e ela for aceita, ela será ignorada.)