sql >> Database >  >> RDS >> SQLite

SQLite groeperen op / uren, dagen, weken, jaar tellen

Ik zou stemmen voor het gebruik van Unix-tijdstempels (aantal seconden sinds het "tijdperk"), aangezien ze handig zijn voor bereikberekening en worden begrepen door de meest robuuste datum-tijdbibliotheken.

SQLite biedt een aantal hulpfuncties voor het werken met Unix-tijdstempels. De meest bruikbare hier is strftime .

U kunt de huidige Unix-tijdstempel invoegen met strftime('%s', 'now') in uw INSERT.

Als u later een bepaald tijdbereik kent waarin u geïnteresseerd bent, kunt u de minimum- en maximumtijdstempels voor dat bereik berekenen en rijen ertussen selecteren:

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

Of, stel dat u de verzoeken van een jaar per maand wilt tellen:

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

Door slim gebruik te maken van de formaatopties strftime biedt, kunt u de meeste van die vragen waarschijnlijk vrij snel oplossen.




  1. Valse externe sleutelbeperking mislukt

  2. Oracle naar PostgreSQL — Cursors en ltrees

  3. Voor Nvarchar (Max) krijg ik maar 4000 tekens in TSQL?

  4. MariaDB numerieke functies (volledige lijst)