sql >> Databáze >  >> RDS >> SQLite

Seskupit SQLite podle/počítat hodiny, dny, týdny, rok

Hlasoval bych pro používání unixových časových razítek (počet sekund od „epochy“), protože jsou vhodné pro výpočet rozsahu a rozumí jim většina robustních data-časových knihoven.

SQLite poskytuje několik pomocných funkcí pro práci s unixovými časovými razítky. Nejužitečnější zde bude strftime .

Aktuální časové razítko Unixu můžete vložit pomocí strftime('%s', 'now') ve vašem INSERT.

Později, pokud znáte konkrétní časový rozsah, který vás zajímá, můžete vypočítat minimální a maximální časové razítko pro tento rozsah a vybrat mezi nimi řádky:

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

Nebo předpokládejme, že chcete počítat požadavky za rok podle měsíce:

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

Díky chytrému použití možností formátu strftime Většinu těchto dotazů pravděpodobně dokážete vyřešit velmi rychle.




  1. Rychlejší způsob vkládání pomocí skriptu v Oracle?

  2. Získejte ID objektu z jeho názvu na serveru SQL:OBJECT_ID()

  3. Jak udržet jednu instanci připojení SQL Server otevřenou pro více požadavků v C#?

  4. Úskalí, kterým je třeba se vyhnout při používání nového Microsoft SSMA verze 7.8