SQLite
 sql >> Datenbank >  >> RDS >> SQLite

SQLite Gruppieren nach/Zählen von Stunden, Tagen, Wochen, Jahren

Ich würde für die Verwendung von Unix-Zeitstempeln (Anzahl der Sekunden seit der "Epoche") stimmen, da sie für die Bereichsberechnung bequem sind und von den robustesten Datums-Zeit-Bibliotheken verstanden werden.

SQLite bietet einige Hilfsfunktionen für die Arbeit mit Unix-Zeitstempeln. Das nützlichste hier wird strftime sein .

Sie können den aktuellen Unix-Zeitstempel einfügen, indem Sie strftime('%s', 'now') verwenden in Ihrer EINFÜGE.

Wenn Sie später einen bestimmten Zeitbereich kennen, an dem Sie interessiert sind, können Sie die minimalen und maximalen Zeitstempel für diesen Bereich berechnen und Zeilen dazwischen auswählen:

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

Oder, angenommen, Sie möchten die Anfragen eines Jahres nach Monat zählen:

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

Durch geschickte Verwendung der Formatoptionen strftime bietet, können Sie die meisten dieser Abfragen wahrscheinlich ziemlich schnell ausarbeiten.