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 UTCa2038-01-19 03:14:07 UTC
Considerando MySQL datetime :
Ciò che memorizzi è ciò che ottieni ™.
Avere una serie di 1000-01-01 00:00:00a9999-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 DATEe TIME, che funzionano proprio come DATETIME, ma ovviamente DATEnon si preoccupano del tempo e TIMEnon 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 DATETIMEovunque. 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 TIMESTAMPposto di a DATETIMEha 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 DATETIMEtutto.
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.