Datetime o timestamp: quale usare in MySQL? Ma soprattutto, perchè usare uno o l’altro? Scopriamo tutto quanto in questo articolo!
MySQL mette a disposizione due tipi in grado di generare data e ora: datetime e timestamp.
Ciao mi chiamo Lorenzo Neri e sono un informatico: realizzo contenuti per aiutare le persone a padroneggiare l’arte del nuovo millennio, ovvero l’informatica!
La domanda che spesso ci si pone, specialmente quando si lavora sul backend di una soluzione, è: quale dei due è più opportuno usare con MySQL?
Perchè usare Timestamp
I timestamp vengono utilizzati in linea generale per tracciare i cambiamenti di un record.
Per tracciare intendo dire ad esempio quando questo cambiamento è avvenuto.
In particolar modo, quando questi record subiscono frequenti variazioni è opportuno usare timestamp.
Infatti, nel caso non lo sapessi, nelle impostazioni di MySQL, puoi impostare l’auto update del relativo campo. In altre parole ogni qual volta i record di una determinata tabella subiscono una modifica, il campo di tipo timestamp si aggiorna in automatico.
Como vero?
Ora che abbiamo capito per quale motivo usare i timestamp, è giusto capire quando usare il tipo datetime.
Perchè usare Datetime in MySQL
Datetime invece, torna comodo se devi salvare un particolare valore.
Che diavolo vuol dire la frase di prima rispetto a quanto abbiamo detto fino ad ora per timestamp?
La vera differenza, sta nell’aggiornamento continuo.
Se i timestamp tornano molto comodi a fronte di aggiornamenti continui, datetime torna utile quando dobbiamo semplicemente tenere traccia di un valore ben specifico.
In altre parole, questo non subisce costanti mutazioni! Ad esempio la data e ora della registrazione di un utente: non si registrerà di certo 138483242 volte 😀
Ora che abbiamo capito se usare datetime o timestamp in MySQL, è giusto parlare anche di una piccola differenza.
Differenza particolare tra datetime e timestamp
Da MySQL versione 5, i timestamp quando vengono generati vengono convertiti dal fuso orario corrente in cui si trova il server a quello UTC!
Ma non c’è nulla di cui aver paura 😀
Quando eseguirai eventuali SELECT per ottenere i dati dalla tabella questi verranno nuovamente convertiti nel fuso orario in cui avviene l’esecuzione della stessa.