Timestamp MySQL :
Sono memorizzati in UTC
Vengono convertiti in UTC in memoria e riconvertiti nel fuso orario al momento del recupero. Se si modificano le impostazioni del fuso orario , cambiano anche i valori recuperati.
Può essere inizializzato e aggiornato automaticamente
È possibile impostare il valore predefinito e / o il valore di aggiornamento automatico su CURRENT_TIMESTAMP
Avere una serie di 1970-01-01 00:00:01 UTC
a2038-01-19 03:14:07 UTC
Considerando MySQL datetime :
Ciò che memorizzi è ciò che ottieni ™.
Avere una serie di 1000-01-01 00:00:00
a9999-12-31 23:59:59
I valori al di fuori dell'intervallo possono funzionare, ma solo i valori nell'intervallo sono garantiti per funzionare.
È possibile memorizzare le date in cui il giorno o il mese è zero.
Questo è il modo MySQL di archiviare i compleanni! Non puoi farlo con a TIMESTAMP
, con l'unica eccezione che è il valore zero di 0000-00-00
.
Puoi memorizzare date non valide, se necessarie, in modalità ALLOW_INVALID_DATES .
È possibile impostare il valore predefinito su NOW()
in alcuni casi, ma il modo preferibile e più naturale di date inizializzate e aggiornate automaticamente è TIMESTAMP
.
E ovviamente ci sono anche DATE
e TIME
, che funzionano proprio come DATETIME
, ma ovviamente DATE
non si preoccupano del tempo e TIME
non si preoccupano della data. Tutti e quattro i tipi di dati funzionano perfettamente con l'ampia gamma di funzioni di data e ora , ma quando si mescolano tipi di dati è necessario essere consapevoli degli effetti di conversione .
Ora, alla tua domanda: dovresti usare DATETIME
ovunque. Non per motivi tecnici, ma poiché non sei ancora chiaro su come funzioni MySQL, DATETIME
è la scelta più semplice. Ciò significa che dovrai calcolare il timestamp corrente in PHP prima di archiviarlo, è facile come:
$mysqldate = date("Y-m-d H:i:s");
La funzione di data di PHP funziona come:
string date ( string $format [, int $timestamp = time() ] )
Il "Y-m-d H:i:s"
formato è quello compatibile con MySQL e lasciando vuoto il secondo parametro, date()
chiama time()
per ottenere l'attuale timestamp UNIX .
L'uso di al TIMESTAMP
posto di a DATETIME
ha il valore aggiunto di MySQL che assume la responsabilità di decidere il timestamp corrente e puoi saltare il campo quando stai inserendo / aggiornando. Ma poiché stai già inviando una query e il codice per ottenere il timestamp corrente in PHP è minimo, puoi tranquillamente andare con DATETIME
tutto.
Per quanto riguarda il codice effettivo per memorizzare il timestamp PHP nel database, dovresti guardare PHP Data Objects e, se non sei ancora chiaro, chiedi invece su StackOverflow . Ma ci sono già quasi 1.5k domande correlate , assicurati di esaminarle prima di porle. Solo un suggerimento, le dichiarazioni preparate è come lo fanno i ragazzi fighi.