sql >> Base de Datos >  >> RDS >> Mysql

¿Cuáles son los pros y los contras de los distintos tipos de campos de fecha/hora en MySQL?

  • TIMESTAMP se almacena en un método propietario de MySQL (aunque básicamente es solo una cadena que consta de año, mes, día, hora, minutos y segundos) y, además, un campo de tipo TIMESTAMP se actualiza automáticamente cada vez que se inserta o cambia el registro y no se especifica explícitamente. se da el valor del campo:

    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 es el tipo de datos estándar para fechas y horas que funciona junto con las funciones de fecha y hora en MySQL. Probablemente usaría esto en la práctica

  • No se recomienda almacenar fechas en formato INTEGER, ya que está abriendo una verdadera lata de gusanos debido a problemas interesantes como zonas horarias, años bisiestos y similares, al menos si tiene la intención de consultar la base de datos en función de fechas específicas almacenadas en ese campo.