[MySQL]Sprawdzenie, czy jest w tabeli istnieje rekord pomiędzy określonym czasem |
[MySQL]Sprawdzenie, czy jest w tabeli istnieje rekord pomiędzy określonym czasem |
29.03.2017, 20:52:29
Post
#1
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 6.12.2016 Ostrzeżenie: (0%) |
Mam w tabeli między innymi pola: time_from, time_to - typu TIME i pole day typu TINYINT. Dodaje do bazy rekord z takimi danymi:
Kod day=1; time_from="13:00:01"; time_to="18:00:00"; Następnie dodaje takie dane: Kod day=1; time_from="14:00:01"; time_to="20:00:00"; day=1; time_from="11:00:01"; time_to="15:00:00"; day=1; time_from="12:45:01"; time_to="13:00:00"; Jeśli dodam powyższe dane, to w tabeli będzie kilka zadań wykonywanych w tym samym czasie, a założenie jest takie że nie może być więcej jak jedno zadanie w tym samym czasie. Nie mam pomysłu jak zbudować zapytanie SQL sprawdzające czy w czasie pomiędzy dwoma godzinami (gg:mm) time_from i time_to już coś jest w bazie. Jak powinna wyglądać klauzula where dla takiego zapytania?. Ten post edytował arturpiotrowski 29.03.2017, 20:54:03 |
|
|
29.03.2017, 21:21:32
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D |
Chyba najprościej jest sprawdzić czy pomiędzy interesującymi Cię godzinami jakieś zadanie ma swój początek lub koniec. Jeśli ma początek, to decydujesz które ma pierwszeństwo i albo wciskasz nowe przed nie, albo ustawiasz nowe po jego końcu. Gdy masz w tym czasie koniec, to po prostu ustawiasz początek nowego po zakończeniu starego.
Inna sprawa jest taka, że IMHO źle do tego podszedłeś. Istotny jest bowiem początek i czas trwania, a nie godzina zakończenia. Tę łatwo wyliczyć dodając do początku czas trwania Poza tym dodając kolejne rekordy nie grzebiesz się z tym, ale jeśli to jest kolejka jakaś, to łapiesz pierwszy z brzegu o najwcześniejszej dacie. Gdy się skończy, znowu łapiesz najwcześniejszy, aż do wyczyszczenia kolejki. Wszystko zależy do czego Ci to potrzebne. -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
11.04.2017, 05:38:49
Post
#3
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 6.12.2016 Ostrzeżenie: (0%) |
czyli, jak ktoś doda np że chce wykonywać zadanie w godzinach 14:00 - 20:00 to mam w php obliczyć ilość minut i te ilość minut wsadzić do bazy? ok Zakładając że nie ma godziny zakończenia w bazie to jak teraz sprawdzić czy dodawane dane nie pokrywają się?
Kod day=1; time_from="14:00:00"; minutes="360"; day=1; time_from="11:00:00"; minutes="240"; day=1; time_from="12:45:00"; minutes="15"; Zadania będą dodawane z konkretnymi godzinami a nie po kolei, tak że np między zadaniami będzie czas wolny, nie tak że jak ktoś doda zadanie 15 minutowe od 12:45 to następne musi być wprowadzone z czasem od 13:00. Będzie mógł wpisać np od 18:00 i następnie ktoś inny będzie mógł zająć czas pomiędzy 13:00 a 18:00 Ten post edytował arturpiotrowski 11.04.2017, 05:47:50 |
|
|
11.04.2017, 07:56:24
Post
#4
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
|
|
|
Wersja Lo-Fi | Aktualny czas: 19.04.2024 - 23:25 |