Existe-t-il une fonction MySQL qui peut être utilisée pour convertir un horodatage Unix en une date lisible par l'homme? J'ai un champ où j'enregistre des temps Unix et maintenant je veux ajouter un autre champ pour les dates lisibles par l'homme.
Existe-t-il une fonction MySQL qui peut être utilisée pour convertir un horodatage Unix en une date lisible par l'homme? J'ai un champ où j'enregistre des temps Unix et maintenant je veux ajouter un autre champ pour les dates lisibles par l'homme.
Réponses:
Utilisation FROM_UNIXTIME()
:
SELECT
FROM_UNIXTIME(timestamp)
FROM
your_table;
Voir aussi: documentation MySQL surFROM_UNIXTIME()
.
from_unixtime
: dev.mysql.com/doc/refman/5.1/en/…
TO_UNIXTIME
, mais à la place UNIX_TIMESTAMP
.
Ce qui manque dans les autres réponses (au moment de la rédaction de ce document) et qui n'est pas directement évident, c'est qu'il from_unixtime
peut prendre un deuxième paramètre pour spécifier le format comme suit:
SELECT
from_unixtime(timestamp, '%Y %D %M %H:%i:%s')
FROM
your_table
Je pense que ce que vous cherchez c'est FROM_UNIXTIME()
Voici une ligne si vous avez un accès rapide au cli mysql:
mysql> select convert_tz(from_unixtime(1467095851), 'UTC', 'MST') as 'local time';
+---------------------+
| local time |
+---------------------+
| 2016-06-27 23:37:31 |
+---------------------+
Remplacez 'MST'
par le fuseau horaire souhaité. J'habite en Arizona 🌵 ainsi la conversion de l'UTC en MST.
Manière facile et simple:
select from_unixtime(column_name, '%Y-%m-%d') from table_name
Depuis que j'ai trouvé que cette question n'était pas au courant, que mysql stocke toujours le temps dans les champs d'horodatage en UTC mais s'affichera (par exemple phpmyadmin) dans le fuseau horaire local, je voudrais ajouter mes résultats.
J'ai un champ last_modified mis à jour automatiquement, défini comme:
`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
En le regardant avec phpmyadmin, on dirait qu'il est en heure locale, en interne c'est 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`
Dans toute constellation, UNIX_TIMESTAMP et 'as UTC' sont toujours affichés en temps UTC.
Exécutez-le deux fois, d'abord sans définir la zone de temps.