¿Existe una función MySQL que se pueda usar para convertir una marca de tiempo Unix en una fecha legible para humanos? Tengo un campo donde guardo veces Unix y ahora quiero agregar otro campo para fechas legibles por humanos.
¿Existe una función MySQL que se pueda usar para convertir una marca de tiempo Unix en una fecha legible para humanos? Tengo un campo donde guardo veces Unix y ahora quiero agregar otro campo para fechas legibles por humanos.
Respuestas:
Uso FROM_UNIXTIME()
:
SELECT
FROM_UNIXTIME(timestamp)
FROM
your_table;
Ver también: documentación de MySQL enFROM_UNIXTIME()
.
from_unixtime
: dev.mysql.com/doc/refman/5.1/en/...
TO_UNIXTIME
, pero en su lugar UNIX_TIMESTAMP
.
Lo que falta en las otras respuestas (a partir de este escrito) y no es directamente obvio es que from_unixtime
puede tomar un segundo parámetro para especificar el formato de esta manera:
SELECT
from_unixtime(timestamp, '%Y %D %M %H:%i:%s')
FROM
your_table
Creo que lo que estás buscando es FROM_UNIXTIME()
Aquí hay una línea si tiene acceso rápido al mysql cli:
mysql> select convert_tz(from_unixtime(1467095851), 'UTC', 'MST') as 'local time';
+---------------------+
| local time |
+---------------------+
| 2016-06-27 23:37:31 |
+---------------------+
Reemplace 'MST'
con su zona horaria deseada. Vivo en Arizona 🌵 por lo tanto, la conversión de UTC a MST.
Manera fácil y simple:
select from_unixtime(column_name, '%Y-%m-%d') from table_name
Como descubrí que esta pregunta no es consciente, mysql siempre almacena la hora en los campos de marca de tiempo en UTC pero se mostrará (por ejemplo, phpmyadmin) en la zona horaria local. Me gustaría agregar mis hallazgos.
Tengo un campo last_modified actualizado automáticamente, definido como:
`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Mirándolo con phpmyadmin, parece que es en hora local, internamente es 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`
En cualquier constelación, UNIX_TIMESTAMP y 'como UTC' siempre se muestran en hora UTC.
Ejecute esto dos veces, primero sin configurar la zona horaria.