Format date dans MySQL sélectionnez ISO 8601
j'essaie de saisir la date de ma base de données dans un horodatage standard et de l'afficher comme ISO 8601. Je ne peux pas le faire facilement en PHP alors j'essaie de le faire dans ma déclaration SELECT. C'est ce que j'ai, mais il affiche une erreur:
SELECT * FROM table_name ORDER BY id DESC DATE_FORMAT(date,"%Y-%m-%dT%TZ")
Qu'est-ce que je fais de mal?
7 réponses
DATE_FORMAT(DateColumn)
doit être dans le SELECT
liste:
SELECT DATE_FORMAT(date, '%Y-%m-%dT%TZ') AS date_formatted
FROM table_name
ORDER BY id DESC
Pourquoi est-ce difficile de le faire en PHP?
date("Y-m-d\TH:i:sO",strtotime($sqldata['time']));
de toute façon, que DATE_FORMAT
doit être dans les champs à sélectionner, pas cloué sur la fin.
DATE_FORMAT ne fonctionne que sur les colonnes de date MySQL, pas sur les horodateurs.
un timestamp UNIX est un entier contenant le nombre de secondes depuis le 1er janvier 1970 UTC. Pour formater cette date selon la norme ISO 8601, vous devez utiliser la fonction FROM_UNIXTIME() à la place.
FROM_UNIXTIME prend les mêmes chaînes de format que DATE_FORMAT, donc pour formater une colonne nommée 'created' vous:
SELECT created /* e.g. 1288799488 */ ,
FROM_UNIXTIME(created,'%Y-%m-%dT%TZ') /* e.g. 2010-11-03T08:51:28Z */
FROM table_name
Cela a fonctionné pour moi
DATE_FORMAT( CONVERT_TZ(`timestamp`, @@session.time_zone, '+00:00') ,'%Y-%m-%dT%TZ')
Voir aussi, c
chaîne de format de date: http://www.php.net/manual/en/function.date.php
echo date('c'); // expected "2013-03-08T14:45:37+05:00"
Vous devriez déplacer la DATE_FORMAT vers la partie select de votre requête comme suit:
SELECT *, DATE_FORMAT(date,"%Y-%m-%dT%TZ") AS date FROM table_name ORDER BY id DESC