SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Grupo SQLite por/contagem de horas, dias, semanas, ano


Eu votaria pelo uso de timestamps Unix (número de segundos desde a "época"), já que eles são convenientes para cálculo de intervalo e compreendidos pelas bibliotecas de data e hora mais robustas.

SQLite fornece algumas funções auxiliares para trabalhar com timestamps Unix. O mais útil aqui será strftime .

Você pode inserir o timestamp atual do Unix usando strftime('%s', 'now') em seu INSERT.

Mais tarde, se você conhece um determinado intervalo de tempo em que está interessado, pode calcular os carimbos de data/hora mínimo e máximo para esse intervalo e selecionar linhas entre eles:
SELECT * FROM data 
WHERE timestamp >= strftime('%s', '2012-12-25 00:00:00') 
AND timestamp < strftime('%s', '2012-12-25 01:00:00');

Ou, supondo que você queira contar as solicitações de um ano por mês:
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);

Através do uso inteligente das opções de formato strftime fornece, você provavelmente pode resolver a maioria dessas consultas rapidamente.