SQLite
 sql >> Database >  >> RDS >> SQLite

SQLite raggruppa per/conta ore, giorni, settimane, anno

Voterei per l'utilizzo dei timestamp Unix (numero di secondi dall'"epoca"), dato che sono convenienti per il calcolo dell'intervallo e compresi dalle librerie di data-ora più robuste.

SQLite fornisce alcune funzioni di supporto per lavorare con i timestamp Unix. Il più utile qui sarà strftime .

Puoi inserire il timestamp Unix corrente usando strftime('%s', 'now') nel tuo INSERT.

Successivamente, se conosci un particolare intervallo di tempo che ti interessa, puoi calcolare i timestamp minimo e massimo per quell'intervallo e selezionare le righe tra di loro:

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

Oppure, supponendo che tu voglia contare le richieste di un anno per mese:

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);

Attraverso un uso intelligente delle opzioni di formato strftime fornisce, probabilmente puoi risolvere la maggior parte di queste query abbastanza rapidamente.