Conversion du serveur MySQL TimeStamp en UTC

j'ai utilisé le plugin timeago (http://timeago.yarp.com/), il a très bien travaillé sur my localhost, qui a son MySQL stockant ses données dans L'horodatage UTC, dont le plugin a besoin pour fonctionner.

cependant, lors du téléchargement de mon projet sur le serveur, un autre type D'horodatage apparaît dans la base de données MySQL. Je reçois un timestamp comme ceci: "jeudi, Février 24, 2011 4: 29 PM" du serveur, alors que j'ai besoin de quelque chose comme ceci: "2008-07-17T09: 24:17Z"

une idée de comment convertir les horodateurs en php?

Edit: les horodatages stockés dans le mauvais format dans la base de données sont automatiquement générés par mysql.

Edit 2: c'est un champ de type "timestamp" et défini par défaut à "CURRENT_TIMESTAMP" quand la ligne est insérée dans db

1
demandé sur Hirvesh 2011-02-24 15:51:07

3 réponses

vous obtenez une chaîne de caractères étrange pour MySQL, êtes-vous sûr que C'est dans un champ Datetime?

vous pouvez obtenir un timestamp UNIX (secondes depuis l'époque) de MySQL avec la fonction , ce format est largement accepté sur les plates-formes multiples:

SELECT UNIX_TIMESTAMP( table.datetime_field ) as datetime_field FROM table

en utilisant quelques fonctions PHP vous pouvez convertir cela au format que vous désirez:

echo date( 'c', $record[ 'datetime_field' ] );

je pense que ceci serait suffisant pour votre problème.

2
répondu Fokko Driesprong 2011-02-24 12:59:22

SELECT UNIX_TIMESTAMP('your_date') AS your_date; dans une requête et

$date('whatever_format', $timestamp_from_mysql); php

3
répondu cypher 2011-02-24 12:56:19

en interne, une colonne[MySQL timestamp column] [1] est stockée en tant que[UTC] [2] mais lors de la sélection D'une date MySQL le convertira automatiquement en temps de session en cours.

lors du stockage d'une date, MySQL supposera que la date est dans le fuseau horaire de la session en cours et la convertira en UTC pour le stockage.

pour sélectionner une colonne timestamp au format UTC

peu importe le fuseau horaire de la session MySQL actuelle:

SELECT 
CONVERT_TZ(`timestamp_field`, @@session.time_zone, '+00:00') AS `utc_datetime` 
FROM `table_name`

vous pouvez également définir le fuseau horaire de la session ou global ou current à UTC et ensuite sélectionner le timestamp comme suit:

SELECT `timestamp_field` FROM `table_name`

j'ai fait un cheatsheet ici: MySQL doit-il avoir son fuseau horaire réglé sur UTC?

1
répondu Timo Huovinen 2017-05-23 12:13:05