Mysql
 sql >> Database >  >> RDS >> Mysql

Quali sono i pro ei contro dei vari tipi di campi data/ora in MySQL?

  • TIMESTAMP è memorizzato in un metodo proprietario MySQL (sebbene sia fondamentalmente solo una stringa composta da anno, mese, giorno, ora, minuti e secondi) e inoltre, un campo di tipo TIMESTAMP viene aggiornato automaticamente ogni volta che il record viene inserito o modificato e non viene fornito il valore 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 è il tipo di dati standard per date e ore che funziona in combinazione con le funzioni di data e ora in MySQL. Probabilmente lo userei in pratica

  • Non è consigliabile memorizzare le date in formato INTEGER, poiché stai aprendo un vero barattolo di worm a causa di problemi interessanti come fusi orari, anni bisestili e simili, almeno se intendi interrogare il database in base a date specifiche memorizzate in quel campo.