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

Come salvare le date future(!) in un database

In primo luogo, ne ho già parlato in modo dettagliato, quindi leggi le mie risposte qui e qui , nonché questo post sul blog di Lau Taarnskov .

Per quanto riguarda MySQL, in genere non si desidera utilizzare un TIMESTAMP campo per l'ora locale di un evento futuro, poiché verrà convertito dal fuso orario della sessione all'ora UTC all'ora di scrittura e riconvertito dall'ora UTC al fuso orario della sessione all'ora di lettura. Anche se questi sono gli stessi ID di fuso orario (cosa che non devono essere), non vi è alcuna garanzia che i dati del fuso orario non cambieranno per uno o entrambi i fusi orari tra il momento in cui scrivi i dati e quando l'evento avviene.

Invece, usa un DATETIME campo, che non esegue conversioni di fuso orario implicite. Ottieni il valore esatto che hai scritto. Memorizza l'ora locale dell'evento e memorizza un VARCHAR campo contenente l'identificatore di fuso orario per l'evento. Questo è l'unico modo per mantenere l'intento originale dell'utente.

La motivazione e i casi limite sono tutti descritti nelle risposte che ho fornito in precedenza.