Esiste una funzione MySQL che può essere utilizzata per convertire un timestamp Unix in una data leggibile dall'uomo? Ho un campo in cui salvo i tempi di Unix e ora voglio aggiungere un altro campo per le date leggibili dall'uomo.
Esiste una funzione MySQL che può essere utilizzata per convertire un timestamp Unix in una data leggibile dall'uomo? Ho un campo in cui salvo i tempi di Unix e ora voglio aggiungere un altro campo per le date leggibili dall'uomo.
Risposte:
Utilizzare FROM_UNIXTIME()
:
SELECT
FROM_UNIXTIME(timestamp)
FROM
your_table;
Vedi anche: documentazione MySQL suFROM_UNIXTIME()
.
from_unixtime
: dev.mysql.com/doc/refman/5.1/it/…
TO_UNIXTIME
, ma invece UNIX_TIMESTAMP
.
Ciò che manca alle altre risposte (al momento della stesura di questo documento) e non direttamente ovvio è quello from_unixtime
può prendere un secondo parametro per specificare il formato in questo modo:
SELECT
from_unixtime(timestamp, '%Y %D %M %H:%i:%s')
FROM
your_table
Penso che quello che stai cercando sia FROM_UNIXTIME()
Ecco una riga se hai un rapido accesso al mysql cli:
mysql> select convert_tz(from_unixtime(1467095851), 'UTC', 'MST') as 'local time';
+---------------------+
| local time |
+---------------------+
| 2016-06-27 23:37:31 |
+---------------------+
Sostituisci 'MST'
con il fuso orario desiderato. Vivo in Arizona 🌵 quindi la conversione da UTC a MST.
Modo semplice e semplice:
select from_unixtime(column_name, '%Y-%m-%d') from table_name
Dal momento che ho scoperto che questa domanda non era a conoscenza, che mysql memorizza sempre l'ora nei campi timestamp in UTC ma visualizzerà (ad esempio phpmyadmin) nel fuso orario locale, vorrei aggiungere i miei risultati.
Ho un campo last_modified aggiornato automaticamente, definito come:
`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Guardandolo con phpmyadmin, sembra che sia l'ora locale, internamente è UTC
SET time_zone = '+04:00'; // or '+00:00' to display dates in UTC or 'UTC' if time zones are installed.
SELECT last_modified, UNIX_TIMESTAMP(last_modified), from_unixtime(UNIX_TIMESTAMP(last_modified), '%Y-%c-%d %H:%i:%s'), CONVERT_TZ(last_modified,@@session.time_zone,'+00:00') as UTC FROM `table_name`
In qualsiasi costellazione, UNIX_TIMESTAMP e 'as UTC' sono sempre visualizzati nell'ora UTC.
Eseguilo due volte, prima senza impostare il fuso orario.