Dada una tabla con una marca de tiempo en cada fila, ¿cómo formatearía la consulta para que se ajuste a este formato de objeto json específico?
Estoy tratando de organizar un objeto json en años / meses.
json para basar la consulta en:
{
"2009":["August","July","September"],
"2010":["January", "February", "October"]
}
Aquí está la consulta que tengo hasta ahora:
SELECT
MONTHNAME(t.summaryDateTime) as month, YEAR(t.summaryDateTime) as year
FROM
trading_summary t
GROUP BY MONTH(t.summaryDateTime) DESC";
La consulta se está descomponiendo porque (como era de esperar) agrupa los diferentes años.
DATE_FORMAT(t.summaryDateTime, '%Y-%m')
DATE_FORMAT( FROM_UNIXTIME(t.summaryDateTime), '%Y-%m' )
GROUP BY YEAR(date), MONTH(date) DESC;
(~ 450 ms) yGROUP BY DATE_FORMAT(date,'%Y-%m')
(~ 850 ms) en una tabla InnoDB con> 300,000 entradas mostró que la primera (la respuesta marcada a esta pregunta) tomó ~ la mitad del tiempo que la última.fuente
yo prefiero
fuente
Debe usar DESC para AÑO y Mes para obtener el orden correcto.
fuente
Sé que esta es una pregunta antigua, pero lo siguiente debería funcionar si no necesita el nombre del mes en el nivel de base de datos:
Ver los documentos de la función EXTRACCIÓN
Probablemente encontrará que esto tiene un mejor rendimiento ... y si está creando un objeto JSON en la capa de la aplicación, puede hacer el formateo / ordenar a medida que revisa los resultados.
NB No sabía que podía agregar DESC a una cláusula GROUP BY en MySQL, tal vez le falte una cláusula ORDER BY:
fuente
EXTRACT(YEAR_MONTH FROM summaryDateTime)
es201901
Debes hacer algo como esto
fuente
Tu también puedes hacer esto
a ordenar por año y mes. Supongamos que desea realizar un pedido desde este año y desde este mes hasta el mes 12
fuente
usar la función EXTRACCIÓN como esta
fuente
Así es como lo hago:
fuente
Está agrupando solo por mes, debe agregar AÑO () al grupo por
fuente
Aún así, necesitaría procesarlo en un script externo para obtener exactamente la estructura que está buscando.
Por ejemplo, use la explosión de PHP para crear una matriz a partir de la lista de nombres de meses y luego use json_encode ()
fuente
Utilizar
En vez de
fuente