Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ciekawa operacja na MySQL ile minęło czasu od zaistnienia szukanego progu
Forum PHP.pl > Forum > Bazy danych > MySQL
tombag
Witam serdecznie

chciałem użyć opcji szukania na forum ale wynik wyszukania czegokolwiek to:

Napotkane błędy:
Wystąpił bląd. Wróć i spróbuj ponownie.
connection to localhost:3312 failed (errno=111, msg=Connection refused)

---

Czy orientujecie się czy jest możliwość takiej oto operacji na danych w MySQL

W bazie mamy 3 kolumy

DataCzas Temperatura Nasłonecznienie %

2016-05-12 12:00:00 10 StopniC 25

2016-05-12 13:00:00 15 StopniC 91

2016-05-12 14:00:00 13 StopniC 92

2016-05-12 15:00:00 13 StopniC 91

2016-05-12 16:00:00 12 StopniC 95

2016-05-12 17:00:00 13 StopniC 98

Chcę pobrać z Bazdy Danych informację czy zaistniała sytuacja gdy: nasłonecznienie wyniosło powyżej 90% i trwało minimum 4 godziny.


SELECT * FROM Tabela WHERE Nasłonecznienie % >90 = w ten sposób wyciągamy informacje, która mówi o tym że przekroczono próg 90% + wyciągnięcie daty i czasu ale
chodzi o to czy to nasłonecznienie trwało minimum 4 godziny NIE PRZERWANIE smile.gif

Jeśli tak taką informację wyrzucamy na stronę np : Wystąpiło dobre nasłonecznienie smile.gif tongue.gif

Sprawa dotyczy operacji na czasie plus najprawdopodobniej JasaScript


Być może zapytanie przyda się komus innemu ponieważ zadanie jest ciekawe smile.gif


mysql> SELECT TIMEDIFF('2014-02-17 12:10:08', '2014-02-16 12:10:08');
Result: '24:00:00' ?

Proszę o pomoc

Jestem w stanie na tem moment wyciągnąć do JSON datę w której nasłonecznienie > 90

Szukam odpowiedzi być może w JavaScript by przetworzyć te dane

Pomar muszę robić z ok 48 godzin do tyłu i to wszystko

CODE
[{"naslonecznienie":"91","dataczas":"2016-12-01 02:00:00"},
{"naslonecznienie":"92","dataczas":"2016-12-01 03:00:00"},
{"naslonecznienie":"93","dataczas":"2016-12-01 04:00:00"},
{"naslonecznienie":"95","dataczas":"2016-12-01 05:00:00"},
{"naslonecznienie":"96","dataczas":"2016-12-01 06:00:00"},
{"naslonecznienie":"92","dataczas":"2016-12-01 07:00:00"}]
mmmmmmm
  1. SELECT * FROM Tabela WHERE `Nasłonecznienie %` >90

Jak juz w ten sposób wyciągniesz sobie godzinę, kiedy przekroczyło 90%, to teraz musisz znaleźć najbliższe, które spadło poniżej 90%. Czyli:
  1. SELECT dataczas początek, (SELECT Min(dataczas) FROM Tabela WHERE dataczas>t.dataczas AND `Nasłonecznienie %`<90) koniec FROM Tabela t WHERE `Nasłonecznienie %` >90

I obliczasz sobie różnicę. I już wiesz, czy trwało mniej, czy też więcej niż 4 h.
Musisz tylko jeszcze odpowiednio zareagować na NULL w `koniec` - może się zdarzyć, gdy takie zdarzenie jeszcze trwa.
trueblue
tombag,
a pomiary są dokonywane i zapisywane zawsze co godzinę?
tombag
trueblue tak na razie sobie wpisałem, że co godzinę, na razie to wystarczy.

czyli taki sposób gdzie wybieram sobie w ten sposób komórki spełniające >90%

SELECT * FROM danet where naslonecznienie > 90

i stwarzam nową tablicę w javascript i w niej umieszczam krańcowe wyniki dataczas które zaszły wyżej i na ich podstawie obliczam różnice ile minęło czasu jest chyba podobnym rozwiązaniem, do którego doszedłem jakoś sam tongue.gif

jeszcze niestety nie rozumiem SQL dobrze jestem zielony ale to sie zmienia smile.gif

Ale co oznacza ten NULL na koniec to nie rozumiem :/
trueblue
tombag,
nadal nie wiem jak często będą zapisy.
Chciałem tylko wspomnieć, że gdyby zdarzyła się sytuacja rzadszych zapisów, to zapytanie, które podał mmmmmmm nie sprawdzi się.
Np. dla sytuacji:
2016-05-13 10:00:00 90
2016-05-13 15:00:00 20
Choć różnica wynosi 5 godzin, to nie wiadomo przez jaki czas w tym zakresie nasłonecznienie miało wartość >90.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.