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?

39
demandé sur Adam 2012-02-17 05:45:27

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 
59
répondu ypercubeᵀᴹ 2016-10-17 19:56:04

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.

5
répondu Niet the Dark Absol 2012-02-17 01:50:47

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
4
répondu Professor Falken 2013-05-04 20:18:21

Cela a fonctionné pour moi

DATE_FORMAT( CONVERT_TZ(`timestamp`, @@session.time_zone, '+00:00')  ,'%Y-%m-%dT%TZ')
4
répondu ofumbi 2016-03-09 03:11:30

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"
4
répondu AL the X 2016-11-18 01:54:52

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
3
répondu Andreas Stokholm 2012-02-17 01:49:51

DATE_FORMAT(date, '%Y-%m-%dT%TZ') doit être select l'article.

SELECT DATE_FORMAT(date, '%Y-%m-%dT%TZ') 
FROM table_name 
ORDER BY id DESC 
2
répondu 2012-02-17 01:53:39