2013-08-11 23 views
13

Ho una colonna in un database MySQL che contiene una data millisecondi (epoca). Voglio creare una query SQL che formatta la data come qualcosa di leggibile (giorno, mese, anno, ore, minuti, secondi in qualsiasi formato e fuso orario). Esiste una funzione SQL (o specifica di MySQL) per fare ciò?MySQL seleziona la data formattata dal campo millisecondo

+1

È possibile utilizzare la funzione 'from_unixtime' in una sottoquery. Controlla la risposta qui sotto. – woofmeow

risposta

28

Provare a utilizzare la funzione FROM_UNIXTIME come questo come indicato nella manual

 
SELECT FROM_UNIXTIME(1196440219); 
-> '2007-11-30 10:30:19' 

È inoltre possibile utilizzare la formattazione come questo

 
mysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(), 
    ->      '%Y %D %M %h:%i:%s %x'); 
    -> '2007 30th November 10:30:59 2007' 
+9

Perfetto, grazie. Il mio tempo era in millisecondi, quindi una leggera modifica ha fatto esattamente quello che volevo: 'SELECT FROM_UNIXTIME (\' column \ '/ 1000)'. –

+0

Glad Ha funzionato :) – woofmeow

6

Se si desidera ottenere il microsecondo da un campo, utilizzare% f,

select FROM_UNIXTIME(DATE_COLUMN/1000,'%Y-%M-%d %H:%i:%s %f') from TABLE_NAME; 

+-------------------------------------------------------+ 
| FROM_UNIXTIME(CREATETIME/1000,'%Y-%M-%d %H:%i:%s %f') | 
+-------------------------------------------------------+ 
| 2016-March-18 16:02:54 342000       | 
+-------------------------------------------------------+ 

Fonte: MYSQL DATE_FORMAT

+2

Se stai dividendo millisecondi per 1000 per ridurre a secondi, i microsecondi non saranno necessariamente 0? – Maura

Problemi correlati