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.
Consulte también, c
cadena de formato hasta la fecha: http://www.php.net/manual/en/function.date.php
echo date(''c''); // expected "2013-03-08T14:45:37+05:00"
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