Autor | Zpráva | ||
---|---|---|---|
Novosad1351 Profil * |
#1 · Zasláno: 6. 12. 2021, 21:51:44
Tento script používám na výpis dat min, max a avg za každý den:
SELECT time, MIN(data), MAX(data), AVG(data) FROM skolnik GROUP BY DATE(timestamp) Jak ale vypíši data každých 30 minut? timestamp je tvaru 2021-12-06 21:50:00 (datetime [1970-01-01 00:00:01]) Strašně moc, moc děkuji za výpomoc. |
||
N71 Profil * |
Obecně je třeba v GROUP BY klauzuli dostávat shodný výsledek výrazu pro každou skupinu. Napadá mě něco ve smyslu
DATE_FORMAT(`timestamp`, '%i') DIV 30 .
To je ale z hlediska výkonu problematické (výraz se počítá pro každý řádek). Pokud by bylo třeba tento select dělat častěji, vyplatí se hodnotu předpočítat a uložit do indexovaného sloupce. Teda možná spíš UNIX_TIMESTAMP(`timestamp`) DIV 1800 . Princip je stejný, dělíme beze zbytku čas v lineárním formátu.
|
||
Časová prodleva: 2 roky
|
0