sql >> Base de Datos >  >> RDS >> SQLite

Grupo SQLite por/contar horas, días, semanas, año

Votaría por usar marcas de tiempo de Unix (número de segundos desde la "época"), dado que son convenientes para el cálculo de rangos y las bibliotecas de fecha y hora más sólidas las entienden.

SQLite proporciona algunas funciones auxiliares para trabajar con marcas de tiempo de Unix. El más útil aquí será strftime .

Puede insertar la marca de tiempo actual de Unix usando strftime('%s', 'now') en tu INSERCIÓN.

Más tarde, si conoce un rango de tiempo en particular que le interese, puede calcular las marcas de tiempo mínimas y máximas para ese rango y seleccionar filas entre ellas:

SELECT * FROM data 
WHERE timestamp >= strftime('%s', '2012-12-25 00:00:00') 
AND timestamp < strftime('%s', '2012-12-25 01:00:00');

O, suponiendo que desea contar las solicitudes de un año por mes:

SELECT strftime('%m', timestamp), count(*) FROM Data
WHERE timestamp >= strftime('%s', '2012-01-01 00:00:00') 
AND timestamp < strftime('%s', '2013-01-01 00:00:00') 
GROUP BY strftime('%m', timestamp);

Mediante el uso inteligente de las opciones de formato strftime proporciona, probablemente pueda resolver la mayoría de esas consultas con bastante rapidez.