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

SQLite grupper efter/tæl timer, dage, uger, år

Jeg ville stemme for at bruge Unix-tidsstempler (antal sekunder siden "epoken"), da de er praktiske til rækkeviddeberegning og forstås af de fleste robuste dato-tidsbiblioteker.

SQLite giver nogle få hjælpefunktioner til at arbejde med Unix-tidsstempler. Den mest nyttige her vil være strftime .

Du kan indsætte det aktuelle Unix-tidsstempel ved at bruge strftime('%s', 'now') i din INSERT.

Hvis du senere kender et bestemt tidsinterval, du er interesseret i, kan du beregne minimums- og maksimumtidsstempler for dette interval og vælge rækker mellem 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 hvis du vil tælle et års anmodninger efter måned:

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

Gennem smart brug af formatindstillingerne strftime giver dig, kan du sikkert løse de fleste af disse forespørgsler ret hurtigt.




  1. betinget unik begrænsning

  2. java.security.AccessControlException:adgang nægtet (java.security.SecurityPermission authProvider.SunMSCAPI)

  3. org.postgresql.util.PSQLEundtagelse:FATAL:beklager, for mange klienter allerede

  4. Forståelse af beskidt læseproblem med SQL Server