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

Quais são os prós e contras dos vários tipos de campo de data/hora no MySQL?


  • TIMESTAMP é armazenado em um método proprietário do MySQL (embora seja basicamente apenas uma string composta por ano, mês, dia, hora, minutos e segundos) e, adicionalmente, um campo do tipo TIMESTAMP é atualizado automaticamente sempre que o registro é inserido ou alterado e não é explícito valor do campo é dado:
    mysql> create table timestamp_test(
        id integer not null auto_increment primary key, 
        val varchar(100) not null default '', ts timestamp not null); 
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> insert into timestamp_test (val) values ('foobar');
    Query OK, 1 row affected (0.00 sec)
    
    mysql> select * from timestamp_test;
    +----+--------+----------------+
    | id | val    | ts             |
    +----+--------+----------------+
    |  1 | foobar | 20090122174108 |
    +----+--------+----------------+
    1 row in set (0.00 sec)
    
    mysql> update timestamp_test set val = 'foo bar' where id = 1;
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql> select * from timestamp_test;
    +----+---------+----------------+
    | id | val     | ts             |
    +----+---------+----------------+
    |  1 | foo bar | 20090122174123 |
    +----+---------+----------------+
    1 row in set (0.00 sec)
    
    mysql> 
    

  • DATETIME é o tipo de dados padrão para datas e horas que funciona em conjunto com as funções de data e hora no MySQL. Eu provavelmente usaria isso na prática
  • Armazenar datas no formato INTEGER não é recomendado, pois você está abrindo uma verdadeira lata de worms devido a problemas interessantes como fusos horários, anos bissextos e similares - pelo menos se você pretende consultar o banco de dados com base em datas específicas armazenadas em esse campo.