Avatar billede sbay Nybegynder
23. august 2010 - 11:30 Der er 5 kommentarer

MySQL - vælge en record pr. time/dag/uge

Hejsa

Lige endnu et ?. Jeg indsamler data hvert 30 sekund, men nogle af de data er mere relevante at vise f.eks en gang i timen. Kan man lave en Select der f.eks tager den første record i hver timeinterval, og så lave en LIMIT 24 (så jeg får et døgn tilbage). Pr dag (LIMIT 30) osv?

Eller skal det programmeres inden SQL kaldet?
Avatar billede arne_v Ekspert
23. august 2010 - 12:23 #1
Hvis der er et heltals id, saa kunne du vel bruge:

SELECT ... WHERE ... id % 120 = 0

for at faa et enkelt 30 sekunders maaling per time.

2880 for per dag o.s.v..
Avatar billede sbay Nybegynder
23. august 2010 - 13:11 #2
Ok, det ser rimeligt fornuftigt ud, men desværre er ID kolonnen ikke helt konsistent. PC'en/softwaren der logger data falder nogle gange ud, og så kan der gå nogle timer uden data. Kan man ikke lave noget sjov på DATETIME kolonnen?
Avatar billede showsource Seniormester
24. august 2010 - 02:32 #3
Måske noget a'la'
SELECT HOUR(tid) as timen, id FROM tabel WHERE tid > DATE_SUB(NOW(), INTERVAL 10 HOUR) GROUP BY timen ORDER BY tid ASC
Avatar billede arne_v Ekspert
29. august 2010 - 00:14 #4
prøv:

SELECT ... WHERE ... NOT UNIX_TIMESTAMP(dittidsfelt) % 1800 BETWEEN 15 AND 1785
Avatar billede arne_v Ekspert
26. september 2010 - 20:57 #5
Kommet videre?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester