sql >> Databasteknik >  >> RDS >> SQLite

SQLite grupperar efter/antal timmar, dagar, veckor, år

Jag skulle rösta för att använda Unix-tidsstämplar (antal sekunder sedan "epoken"), med tanke på att de är praktiska för intervallberäkning och förstås av de flesta robusta datum- och tidbibliotek.

SQLite tillhandahåller några hjälpfunktioner för att arbeta med Unix-tidsstämplar. Den mest användbara här kommer att vara strftime .

Du kan infoga den aktuella Unix-tidsstämpeln genom att använda strftime('%s', 'now') i din INSERT.

Senare, om du känner till ett visst tidsintervall som du är intresserad av, kan du beräkna minsta och maximala tidsstämplar för det intervallet och välja rader mellan dem:

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

Eller om du vill räkna ett års förfrågningar per månad:

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

Genom smart användning av formatalternativen strftime ger, kan du förmodligen lösa de flesta av dessa frågor ganska snabbt.




  1. En guide till MySQL Galera Cluster Streaming Replication:Del ett

  2. Guide för att designa databas för anställdas ledningssystem i MySQL

  3. Komplex Postgres-fråga

  4. Hur kör man två mysql-frågor som en i PHP/MYSQL?