web-dev-qa-db-fra.com

Convertissez l'horodatage Unix en date lisible par l'homme avec MySQL

Existe-t-il une fonction MySQL permettant de convertir un horodatage Unix en une date lisible par l'homme? J'ai un champ où je sauve des temps Unix et maintenant je veux ajouter un autre champ pour les dates lisibles par l'homme.

200
King Julien

Utilisez FROM_UNIXTIME() :

SELECT
  FROM_UNIXTIME(timestamp) 
FROM 
  your_table;

Voir aussi: Documentation MySQL sur FROM_UNIXTIME() .

351
CristiC

Ce qui manque dans les autres réponses (au moment de l'écriture) et qui n'est pas directement évident, c'est que from_unixtime peut prendre un deuxième paramètre pour spécifier le format de la manière suivante:

_SELECT
  from_unixtime(timestamp, '%Y %D %M %H:%i:%s')
FROM 
  your_table
_
97
User

Je pense que ce que vous cherchez, c'est FROM_UNIXTIME()

31
Ted Hopp

Besoin d'un horodatage Unix dans un fuseau horaire spécifique?

Voici un one-line si vous avez un accès rapide à la 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 ???? donc la conversion de UTC en MST.

18

Pourquoi se soucier de sauvegarder le champ comme lisible? Juste nous AS

SELECT theTimeStamp, FROM_UNIXTIME(theTimeStamp) AS readableDate
               FROM theTable
               WHERE theTable.theField = theValue;

EDIT: Désolé, nous stockons tout en millisecondes pas secondes. Fixe le.

6
josh.trow

Vous pouvez utiliser la fonction DATE_FORMAT. Ici une page avec des exemples et les modèles que vous pouvez utiliser pour sélectionner différents composants de date.

4
Briguy37

Manière simple et facile:

select from_unixtime(column_name, '%Y-%m-%d') from table_name

1
Akash gupta

Comme je ne connaissais pas cette question, mysql stocke toujours l'heure dans les champs d'horodatage au format UTC, mais affichera (par exemple, phpmyadmin) dans le fuseau horaire local, j'aimerais 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 regardant avec phpmyadmin, on dirait que c'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 heure UTC.

Exécutez-le deux fois, d'abord sans définir time_zone.

0
Gunnar Bernstein