MySQL - Abfragen gestalten
Guten Abend,
ich stehe vor einer kl. Aufgabe. Und zwar benutzen wir hier TrafMeter Lite. Das Programm protokolliert jede Stunde wie viel Pakete raus und wie viele rein kommen (Netzwerkverkehr auf der Karte) sind. Das Ganze wird in einer MySQL Datenbank gespeichert. Nun sind alle Datensätze wie folgt aufgebaut:
Natürlich sollen die Info's dann schön dargestellt werden per Web-Interface. Das habe ich soweit auch schon fast fertig. Es fehlen halt noch die entsprechende SQL-Statments. Abrufbar soll folgendes sein:
1.) nach Jahre => Sprich ich wähle das Jahr aus und bekomme dann daneben alle Monate mit "Gesendete" und "Empfange"
2.) Dann klickt man auf einen Monat => Alle Datensätze von diesem Moant ansehen.
3.) Dann klickt man auf einen Tag => Alle Datensätze von diesem Tag ansehen.
Aufbau der Felder:
TS
Typ: int(11)
Aufbau: die 6 steht für das Jahr. Die nächsten 2 Stellen ist der Monat. Daruf kommt mit 2 Stellen der Tag, dann die Stunde (auch 2 Stellen) und die restlichen 2 sind die Sekunden.
Wie müssten die einzelen Statments für die 3 Anforderungen aussehen?? Schon mal Danke im vorraus...
Gruß
Dani
ich stehe vor einer kl. Aufgabe. Und zwar benutzen wir hier TrafMeter Lite. Das Programm protokolliert jede Stunde wie viel Pakete raus und wie viele rein kommen (Netzwerkverkehr auf der Karte) sind. Das Ganze wird in einer MySQL Datenbank gespeichert. Nun sind alle Datensätze wie folgt aufgebaut:
ts sent recv
610110700 32793740 10359517
Natürlich sollen die Info's dann schön dargestellt werden per Web-Interface. Das habe ich soweit auch schon fast fertig. Es fehlen halt noch die entsprechende SQL-Statments. Abrufbar soll folgendes sein:
1.) nach Jahre => Sprich ich wähle das Jahr aus und bekomme dann daneben alle Monate mit "Gesendete" und "Empfange"
2.) Dann klickt man auf einen Monat => Alle Datensätze von diesem Moant ansehen.
3.) Dann klickt man auf einen Tag => Alle Datensätze von diesem Tag ansehen.
Aufbau der Felder:
TS
Typ: int(11)
Aufbau: die 6 steht für das Jahr. Die nächsten 2 Stellen ist der Monat. Daruf kommt mit 2 Stellen der Tag, dann die Stunde (auch 2 Stellen) und die restlichen 2 sind die Sekunden.
Wie müssten die einzelen Statments für die 3 Anforderungen aussehen?? Schon mal Danke im vorraus...
Gruß
Dani
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 42323
Url: https://administrator.de/forum/mysql-abfragen-gestalten-42323.html
Ausgedruckt am: 01.04.2025 um 22:04 Uhr
11 Kommentare
Neuester Kommentar

hallo,
ich verstehzwar deine frage nicht so richtig aber du könntest die sql funktion substr(ts::text,0,2) für jahr oder substr(ts::text,2,4) für monat oder substr(ts::text,4,6) für tag nutzen.
hoffe ich hab die richtig verstanden.
mfg godlike P
ich verstehzwar deine frage nicht so richtig aber du könntest die sql funktion substr(ts::text,0,2) für jahr oder substr(ts::text,2,4) für monat oder substr(ts::text,4,6) für tag nutzen.
hoffe ich hab die richtig verstanden.
mfg godlike P

select substr(ts::text,5,7) from t_tml
mfg
mfg
...MySql hab ich grad nicht griffbereit, aber in halbwegs "normalen" SQL sollte es so gehen:
Gruß
Biber
[Edit]
@Godlike
...bzw:
select * from t_tml where substr(ts::text,5,7) = '07'
and substr(ts::text,3,5) = '17' and substr(ts::text,1,3) = '10' ....;
[/Edit]
[EditEdit] ... where ts = '610110700' !!!! ..
*lach* ..hab ich auch grad gemerkt....
...where ts >= '610110700' and ts <'610110800' ...
[/EditEdit]
SELECT tstabelle.ts, "200" + mid(cstr(ts),1,1) as year, mid(cstr(ts),2,2) as month,
mid(cstr(ts),4,2) as day,
mid(cstr(ts),6,2) +":" + mid(cstr(ts),8,2) as hhmm
FROM tstabelle;
ts | year | month | ~ day | hhmm |
---|---|---|---|---|
610172044 | 2006 | 10 | 17 | 20:44 |
Gruß
Biber
[Edit]
@Godlike
...bzw:
select * from t_tml where substr(ts::text,5,7) = '07'
and substr(ts::text,3,5) = '17' and substr(ts::text,1,3) = '10' ....;
[/Edit]
[EditEdit] ... where ts = '610110700' !!!! ..
*lach* ..hab ich auch grad gemerkt....
...where ts >= '610110700' and ts <'610110800' ...
[/EditEdit]

@ biber
nein! wenn dann:
select substr(ts::text,5,7) from t_tml where ts = '610110700' !!!!
100% ig
mfg
@Dani
Sorry, dann kennt MySql die cstr()-Funktionalität zwar, wie godLike ja vorgeführt hat, aber nicht die cStr()- Funktion.
Aber die Mimik ist schon die Gleiche... halt auf die jeweils relevanten Stellen des ts-als-String-Wertes vergleichen bzw. abgreifen.
Gruß
Biber
Sorry, dann kennt MySql die cstr()-Funktionalität zwar, wie godLike ja vorgeführt hat, aber nicht die cStr()- Funktion.
Aber die Mimik ist schon die Gleiche... halt auf die jeweils relevanten Stellen des ts-als-String-Wertes vergleichen bzw. abgreifen.
Gruß
Biber
Moin Dani,
so wie godlike P skizziert hat:
Select * from t_tml
... ...where ts >= '610110700' and ts <'610110800'; ... [ alle Sätze vom 11.Okt 06 von 07h bis 07:59:59]
-oder-
... ...where substr(ts::text,0,3 = '610'; ... [ alle Sätze aus dem Oktober 2006]
-oder-
Wenn Du Deine Kriterien so wie oben beschrieben "staffeln" willst, könntest Du bei jeder weiter einschränkenden Auswahl der Anwender eine weitere AND-Bedingung an das Statement dranhängen.
Anfangen mit Jahr:
...where substr(ts::text,0,1 = '6';
-weiter mit Jahr UND Monat:
where substr(ts::text,0,1 = '6' AND substr(ts::text,1,3 = '10';
etc.
Oder verstehe ich jetzt die Frage miss?
Gruß
Biber
so wie godlike P skizziert hat:
Select * from t_tml
... ...where ts >= '610110700' and ts <'610110800'; ... [ alle Sätze vom 11.Okt 06 von 07h bis 07:59:59]
-oder-
... ...where substr(ts::text,0,3 = '610'; ... [ alle Sätze aus dem Oktober 2006]
-oder-
Wenn Du Deine Kriterien so wie oben beschrieben "staffeln" willst, könntest Du bei jeder weiter einschränkenden Auswahl der Anwender eine weitere AND-Bedingung an das Statement dranhängen.
Anfangen mit Jahr:
...where substr(ts::text,0,1 = '6';
-weiter mit Jahr UND Monat:
where substr(ts::text,0,1 = '6' AND substr(ts::text,1,3 = '10';
etc.
Oder verstehe ich jetzt die Frage miss?
Gruß
Biber