Existe uma função MySQL que pode ser usada para converter um registro de data e hora do Unix em uma data legível por humanos? Eu tenho um campo em que salvo os tempos do Unix e agora quero adicionar outro campo para datas legíveis por humanos.
Existe uma função MySQL que pode ser usada para converter um registro de data e hora do Unix em uma data legível por humanos? Eu tenho um campo em que salvo os tempos do Unix e agora quero adicionar outro campo para datas legíveis por humanos.
Respostas:
Use FROM_UNIXTIME()
:
SELECT
FROM_UNIXTIME(timestamp)
FROM
your_table;
Veja também: documentação do MySQL emFROM_UNIXTIME()
.
from_unixtime
: dev.mysql.com/doc/refman/5.1/en/…
TO_UNIXTIME
, mas sim UNIX_TIMESTAMP
.
O que está faltando nas outras respostas (no momento em que escrevo) e não é diretamente óbvio é que é from_unixtime
possível usar um segundo parâmetro para especificar o formato da seguinte forma:
SELECT
from_unixtime(timestamp, '%Y %D %M %H:%i:%s')
FROM
your_table
Eu acho que o que você está procurando é FROM_UNIXTIME()
Aqui está uma lista, se você tiver acesso rápido ao mysql cli:
mysql> select convert_tz(from_unixtime(1467095851), 'UTC', 'MST') as 'local time';
+---------------------+
| local time |
+---------------------+
| 2016-06-27 23:37:31 |
+---------------------+
Substitua 'MST'
pelo fuso horário desejado. Eu moro no Arizona, portanto, a conversão de UTC para MST.
Maneira fácil e simples:
select from_unixtime(column_name, '%Y-%m-%d') from table_name
Desde que eu achei essa pergunta inconsciente, que o mysql sempre armazena tempo nos campos de registro de data e hora no UTC, mas será exibido (por exemplo, phpmyadmin) no fuso horário local, gostaria de adicionar minhas descobertas.
Eu tenho um campo last_modified atualizado automaticamente, definido como:
`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Olhando para ele com phpmyadmin, parece que está no horário local, 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`
Em qualquer constelação, UNIX_TIMESTAMP e 'as UTC' são sempre exibidos no horário UTC.
Execute isso duas vezes, primeiro sem definir o time_zone.