Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Quando um carimbo de data/hora (automático) é atualizado?


Dê o comando SHOW CREATE TABLE whatever

Então veja a definição de tabela .

Provavelmente tem uma linha assim
logtime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

iniciar. DEFAULT CURRENT_TIMESTAMP significa que qualquer INSERT sem uma configuração de carimbo de data/hora explícita usa a hora atual. Da mesma forma, ON UPDATE CURRENT_TIMESTAMP significa que qualquer atualização sem um timestamp explícito resulta em uma atualização para o valor do timestamp atual.

Você pode controlar esse comportamento padrão ao criar sua tabela.

Ou, se a coluna de carimbo de data/hora não foi criada corretamente, você pode alterá-la.
ALTER TABLE whatevertable
     CHANGE whatevercolumn 
            whatevercolumn TIMESTAMP NOT NULL
                           DEFAULT CURRENT_TIMESTAMP 
                           ON UPDATE CURRENT_TIMESTAMP;

Isso fará com que as operações INSERT e UPDATE na tabela atualizem automaticamente sua coluna de carimbo de data/hora. Se você deseja atualizar whatevertable sem alterar o timestamp, ou seja,

então você precisa emitir esse tipo de atualização.
UPDATE whatevertable
   SET something = 'newvalue',
       whatevercolumn = whatevercolumn
 WHERE someindex = 'indexvalue'

Isso funciona com TIMESTAMP e DATETIME colunas. (Antes da versão 5.6.5 do MySQL só funcionava com TIMESTAMP s) Quando você usa TIMESTAMP s, os fusos horários são considerados:em uma máquina servidora configurada corretamente, esses valores são sempre armazenados em UTC e convertidos para a hora local na recuperação.