Temat: odczyt bazy MySQL z ostatnich 24 godzin

Tak wyglada moja baza danych z osobną kolumną data i czas

 Zmień    id    data    time    CA    TC    W1    W2    TW1    TW2    T0    T1    T2    T3    T4    T5    T6
 edytuj    378    2016-02-24    11:20:04    1013.59    3.60    99.90    43.70    2.30    21.10    21.44    13.19    21.75    19.87    20.50    20.06    20.87
 edytuj    377    2016-02-24    11:10:04    1013.77    3.60    99.90    43.80    2.00    21.10    21.44    13.19    21.62    19.87    20.56    20.12    20.87
 edytuj    376    2016-02-24    11:00:04    1013.66    3.60    99.90    44.00    2.10    21.20    21.44    13.19    21.62    19.87    20.50    20.12    20.94
 edytuj    375    2016-02-24    10:50:04    1013.59    3.60    99.90    43.80    2.20    21.10    21.44    13.19    21.62    19.87    20.50    20.19    20.94

i jak teraz wyjąć dane z ostatnich 24 godzin analogicznie 7 dni


moje zapytanie wygląda teraz tak :

mysql -h host -u root -phaslo -D meteo -e "SELECT * FROM odczyty WHERE time > 'now' - '24hours' INTO OUTFILE '/tmp/meteo/dane24.txt' FIELDS TERMINATED BY ' ';"

i przy tym zapytaniu wyswietla mi ale calość a nie tylko ostatnie 24 godziny, Czy błędem było zrobienie dwóch kolumn data i time. Wiem że istnieje łączenie kolumn ale mi to nie działa prawidłowo:
CONCAT(data, ' ', time) AS data bo jak dodaćdo tego reszte kolumn ?

Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

2

Odp: odczyt bazy MySQL z ostatnich 24 godzin

Pola data i czas są tekstowe czy typu timestamp? Możesz użyć funkcji UNIX_TIMESTAMP i po prostu przekonwertować to co masz na właściwy typ danych

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: odczyt bazy MySQL z ostatnich 24 godzin

Wystarczy że zmienię  typy kolumny na: 

data= date
time= time

czy jedną i drugą ustawić jako datatime czy taimestamp

Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

4 (edytowany przez Cezary 2016-02-24 12:47:13)

Odp: odczyt bazy MySQL z ostatnich 24 godzin

I tak żeby pobrać ostatnie 24h będziesz musiał podłączyć datę i czas w jedno. Więc czy zmienisz typy czy jawnie zrobisz konwersję do timestampu - jak chcesz.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: odczyt bazy MySQL z ostatnich 24 godzin

Format zmieniony tylko teraz urodził się inny problem  bo przy exporcie komendą:  "SELECT * FROM odczyty WHERE data > 'now' - '24 hours' INTO OUTFILE '/tmp/meteo/dane24.txt' FIELDS TERMINATED BY ' ';"to  miedzy data a godzina wskoczył znak \ i spacja

5007 2016-02-24\ 15:30:04 1013.79 4.70 91.70 43.00 2.40 21.10 21.44 13.50 22.19 20.06 21.12 20.25 21.12
5008 2016-02-24\ 15:40:04 1013.93 4.50 92.70 43.00 2.40 21.10 21.37 13.44 22.00 20.06 21.12 20.19 21.06
5009 2016-02-24\ 15:50:04 1013.83 4.50 99.90 43.00 1.10 21.10 21.37 13.44 21.94 20.06 21.06 20.12 21.00
5010 2016-02-24\ 16:00:04 1013.74 4.60 99.90 42.90 1.10 21.00 21.37 13.38 21.75 20.19 21.00 20.12 20.87

a w konsoli pokazuje dobrze :

| 5009 | 2016-02-24 15:50:04 | 1013.83 | 4.50 | 99.90 | 43.00 | 1.10 | 21.10 | 21.37 | 13.44 | 21.94 | 20.06 | 21.06 | 20.12 | 21.00 |
| 5010 | 2016-02-24 16:00:04 | 1013.74 | 4.60 | 99.90 | 42.90 | 1.10 | 21.00 | 21.37 | 13.38 | 21.75 | 20.19 | 21.00 | 20.12 | 20.87 |
| 5011 | 2016-02-24 16:10:04 | 1013.80 | 4.50 | 99.90 | 42.90 | 1.20 | 21.00 | 21.37 | 13.31 | 21.75 | 20.06 | 21.00 | 20.06 | 20.87 |

a znowu jak dam zapis do pliku "SELECT * FROM odczyty WHERE data > 'now' - '24 hours' INTO OUTFILE '/tmp/meteo/dane24.txt' FIELDS TERMINATED BY ' ';" > /tmp/meteo/dane24.txt

to nie ma \ miedzy data a godziną ale zaś robi tabulatory

id    data    CA    TC    W1    W2    TW1    TW2    T0    T1    T2    T3    T4    T5    T6
5000    2016-02-24 14:20:04    1013.52    5.00    99.90    41.80    1.60    21.70    21.50    14.13    22.31    20.06    21.12    20.69    21.75
5001    2016-02-24 14:30:04    1013.55    4.90    99.90    41.70    1.80    21.60    21.50    14.00    22.19    20.06    21.06    20.56    21.62
5002    2016-02-24 14:40:04    1013.40    4.90    99.90    42.00    1.90    21.60    21.50    13.88    22.06    20.06    21.06    20.44    21.50
5003    2016-02-24 14:50:04    1013.41    4.90    99.90    42.30    1.90    21.50    21.50    13.81    22.12    20.06    21.06    20.37    21.44
5004    2016-02-24 15:00:04    1013.60    4.90    99.90    42.70    1.90    21.40    21.50    13.69    22.19    20.31    21.06    20.31    21.31

Co do pierwszej lini to ją usunie bez problemu komenda
sed -i 1d /tmp/meteo/dane24.txt a jak sed usunać znak \ lub ewentualnie odpowiednio podac parametr  INTO OUTFILE

Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

6

Odp: odczyt bazy MySQL z ostatnich 24 godzin

Nie rób select *  tylko wymień konkretne kolumny, a do daty użyj funkcji date_format - nie trzymaj się formatu który daje baza bo któregoś dnia możesz się zdziwić jak przyjdzie aktualizacja bazy.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

7

Odp: odczyt bazy MySQL z ostatnich 24 godzin

Ten date_format mam użyć w zapytaniu po where data DATE_FORMAT(NOW(),'%Y %d %m  %T'

Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

8

Odp: odczyt bazy MySQL z ostatnich 24 godzin

Nie, select DATE_FORMAT(data, '%Y-%m-%d')...

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

9 (edytowany przez manguscik 2016-02-24 19:33:24)

Odp: odczyt bazy MySQL z ostatnich 24 godzin

Dzieki za odpowiedź ale nie zdążyłem edytować że znalazłem ale mimo  formatowania daty poprzez

"SELECT id,DATE_FORMAT(data, '%Y-%m-%d %T') data,CA,TC,W1,W2,TW1,TW2,T0,T1,T0,T2,T3,T4,T5,T6 FROM odczyty
ORDER BY ID DESC limit 10 INTO OUTFILE '/root/dane24.txt' FIELDS TERMINATED BY ' ';"

w pliku txt nadal mam \

5025 2016-02-24\ 18:30:04 1014.60 4.30 95.10 41.00 0.90 22.60 22.50 12.94 22.50 21.56 20.00 20.87 21.44 21.06
5024 2016-02-24\ 18:20:04 1014.71 4.30 96.20 40.90 0.70 22.60 22.44 12.94 22.44 21.62 20.06 20.87 21.37 21.06

jak między %d %T usunę spacje to data z czasem się zlewa i nie mogę sobie z tym poradzić.

Jak tego nie ogarnę  to  w ostateczności w skrypcie do generowania wykresu  w gnuplocie format daty opiszę mu  z znakiem - i  %Y-%m-%d-%H:%M:%S  i tak samo zrobię w SELECT id,DATE_FORMAT(data, '%Y-%m-%d-%T')


Co do zapytania bazy o dane z danego okresu czasu np od dziś - 3 dni to zapytanie musi wyglądać tak:

"SELECT id,DATE_FORMAT(data, '%Y-%m-%d  %T') data,CA,TC,W1,W2,TW1,TW2,T0,T1,T0,T2,T3,T4,T5,T6 FROM odczyty
  WHERE data > DATE_SUB(CURDATE(),INTERVAL 3 DAY) ORDER BY DATA DESC;"

Pozostaje tylko wyświetlanie daty w pliku txt.

Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

10

Odp: odczyt bazy MySQL z ostatnich 24 godzin

Zrób DATE_FORMAT(data, '%Y-%m-%d  %H:%M:%S')

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

11

Odp: odczyt bazy MySQL z ostatnich 24 godzin

zmieniłem jedną literkę odpowiedzialną za minuty

DATE_FORMAT(data, '%Y-%m-%d  %H:%I:%S')

ale przy tym formacie jest jeszcze więcej \\

5034 2016-02-24\ \ 20:08:04 
Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

12

Odp: odczyt bazy MySQL z ostatnich 24 godzin

Zrób: DATE_FORMAT(data, '%Y-%m-%d=%H:%I:%S') i zobacz co wyjdzie.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

13

Odp: odczyt bazy MySQL z ostatnich 24 godzin

Wstawianie zanku = powoduje jego wyświetlenie.

Co do formatu DATE_FORMAT(data, '%Y-%m-%d=%H:%i:%S') zmieniłem literkę I dużą na małą bo źle wyświetlał minuty bo duże I to Hour (01-12).

Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

14

Odp: odczyt bazy MySQL z ostatnich 24 godzin

I nie ma znaku\? Ciekawe dlaczego tam wstawia. Masz plik, więc sedem lub tr sobie zamień \ lub = na spacje i tyle.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

15

Odp: odczyt bazy MySQL z ostatnich 24 godzin

Nie idzie dojść końca z tym formatem daty więc tak jak pisałeś podmienię znak = na spacje za pomocą

sed -e 's/=/ /' /tmp/meteo/dane=24.txt > /tmp/meteo/dane24.txt

Czy taka podmiana bardzo obciąża router ? Bo  może w gnuplocie zmienię format daty na taki jaki ustawię w format_date aby nie męczyć routera

Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

16

Odp: odczyt bazy MySQL z ostatnich 24 godzin

Wszystko jedno jak zrobisz. Możesz i podać format w gnuplocie.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

17 (edytowany przez manguscik 2017-01-02 14:27:26)

Odp: odczyt bazy MySQL z ostatnich 24 godzin

Jak zadać pytanie  bazy danych MySQL o dane z ostatnich 24h ale  z roku wcześniej :

To jest zapytanie o ostatnie 24 godziny  FROM odczyty WHERE data > DATE_SUB(NOW(),INTERVAL 24 HOUR)  ale jak zadać pytanie ostatnie 24 godziny ale roku wcześniej ?


Edit:

Chodzi o pobranie danych do wykresu temperatury z ostatnich 24 godzin plus drugie dane z tego samego okresu tylko że rok wcześniej aby pokazać różnice temperatur w tym roku a jak było rok wcześniej.

Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

18

Odp: odczyt bazy MySQL z ostatnich 24 godzin

Żeby nie było: sprawdziłem u siebie. Prymityw z konwersją formatu:

...from odczyty where date_format(data, '%Y%m%d%H%i%S') > date_format(date_sub(now(),interval 24 hour), concat(date_format(now(), '%Y') - 1,'%m%d%H%i%S')) and date_format(data, '%Y%m%d%H%i%S') < date_format(now(), concat(date_format(now(), '%Y') - 1,'%m%d%H%i%S'))

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.