SQLite
 sql >> Base de données >  >> RDS >> SQLite

SQLite group by/count heures, jours, semaines, année

Je voterais pour l'utilisation des horodatages Unix (nombre de secondes depuis "l'époque"), étant donné qu'ils sont pratiques pour le calcul de plage et compris par la plupart des bibliothèques date-heure robustes.

SQLite fournit quelques fonctions d'assistance pour travailler avec les horodatages Unix. Le plus utile ici sera strftime .

Vous pouvez insérer l'horodatage Unix actuel en utilisant strftime('%s', 'now') dans votre INSERT.

Plus tard, si vous connaissez une plage horaire particulière qui vous intéresse, vous pouvez calculer les horodatages minimum et maximum pour cette plage et sélectionner des lignes entre elles :

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

Ou, supposons que vous souhaitiez compter les requêtes d'une année par mois :

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

Grâce à une utilisation intelligente des options de format strftime fournit, vous pouvez probablement résoudre la plupart de ces requêtes assez rapidement.