mysql database date-format iso8601

Formato de fecha en MySQL SELECT como ISO 8601



database date-format (7)

Estoy tratando de tomar la fecha de mi base de datos en una marca de tiempo estándar y mostrarla como ISO 8601. No puedo hacerlo fácilmente en PHP, así que estoy tratando de hacerlo en mi declaración SELECT. Esto es lo que tengo, pero muestra un error:

SELECT * FROM table_name ORDER BY id DESC DATE_FORMAT(date,"%Y-%m-%dT%TZ")

¿Qué estoy haciendo mal?


¿Por qué es difícil hacerlo en PHP?

date("Y-m-d/TH:i:sO",strtotime($sqldata[''time'']));

De todos modos, ese DATE_FORMAT debe estar en los campos para seleccionar, no pegado al final.



DATE_FORMAT solo funciona en columnas de fecha de MySQL, no en marcas de tiempo.

Una marca de tiempo UNIX es un número entero que contiene el número de segundos desde el 1 de enero de 1970 UTC. Para formatear esto como una fecha ISO 8601, debe usar la función FROM_UNIXTIME () en su lugar.

FROM_UNIXTIME toma las mismas cadenas de formato que DATE_FORMAT, por lo que para formatear una columna llamada ''creado'' usted:

SELECT created /* e.g. 1288799488 */ , FROM_UNIXTIME(created,''%Y-%m-%dT%TZ'') /* e.g. 2010-11-03T08:51:28Z */ FROM table_name


Debe mover el DATE_FORMAT a la parte seleccionada de su consulta de esta manera:

SELECT *, DATE_FORMAT(date,"%Y-%m-%dT%TZ") AS date FROM table_name ORDER BY id DESC


El DATE_FORMAT(DateColumn) debe estar en la lista SELECT :

SELECT DATE_FORMAT(date, ''%Y-%m-%dT%TZ'') AS date_formatted FROM table_name ORDER BY id DESC


Esto funciono para mi

DATE_FORMAT( CONVERT_TZ(`timestamp`, @@session.time_zone, ''+00:00'') ,''%Y-%m-%dT%TZ'')


DATE_FORMAT(date, ''%Y-%m-%dT%TZ'') debe estar en la cláusula de select .

SELECT DATE_FORMAT(date, ''%Y-%m-%dT%TZ'') FROM table_name ORDER BY id DESC