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

Come memorizzare la data in millisecondi unix in Mysql?

Non. DateTime i valori devono essere archiviati come DateTime , a meno che tu non abbia una buona ragione per archiviarli in altro modo (come per supportare i valori di data e ora al di fuori dei valori min/max di DateTime ), suggerirei di lasciarlo in un DateTime colonna.

Puoi sempre modificare il modo in cui li restituisci dal database durante Select o nel livello di presentazione. Per restituire l'ora unix da DateTime , MySql fornisce un metodo integrato chiamato UNIX_TIMESTAMP . Per restituire il numero di millisecondi, moltiplica semplicemente per 1000, poiché il timestamp unix è il numero di secondi dal 1 gennaio 1970 (esclusi i secondi intercalari). Se vuoi memorizzare l'ora Unix, dovrai usare un tipo di dati int.

Tieni presente che se memorizzi l'ora Unix invece di memorizzare il DateTime effettivo valore in un DateTime colonna del tipo di dati, perderai la possibilità di utilizzare facilmente tutte le funzioni di database datetime integrate. Ad esempio, se vuoi scoprire quante righe appartengono a un mese specifico, dovrai prima tradurre i dati da int a datetime e solo allora sarai in grado di calcolarlo.

Perderai anche la precisione (poiché l'ora unix è imprecisa anche sulla risoluzione di 1 secondo, perché ignora i secondi intercalari).

Quindi, per concludere:quando il database ti offre un tipo di dati che si adatta ai dati, non archiviare quei dati utilizzando un tipo di dati diverso. usa Date tipo di dati se si desidera memorizzare solo le date, DateTime tipo di dati se si desidera memorizzare i valori datetime e Time tipo di dati se si desidera memorizzare un'ora specifica della giornata.

P.S.
Quando hai a che fare con i valori di data e ora, soprattutto se devi trattare con clienti da più posizioni, archivia SEMPRE solo le date UTC nel tuo database, a meno che, ovviamente, tu non voglia impazzire.