![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 88 Pomógł: 0 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam w tabeli SQL dwie kolumny START i KONIEC w START jest zapisana godzina rozpoczęcia akcji przykładowo '17:45' a w KONIEC jest zapisana godzina zakończenia akcji przykładowo '21:15' obie kolumny są typu `varchar`. Gdy użytkownik dodaje swoją akcje np. START o '18:20' i KONIEC o '19:10' chciałbym sprawdzić czy jego przedział czasowy nie jest już zarezerwowany. Nie mam zielonego pojęcia jak się za to zabrać, próbowałem z BETWEEN i z sprawdzaniem większości i mniejszości. Przekopywałem również google ale bez żadnych rezultatów. Proszę o pomoc z napisaniu zapytania. Z góry dzięki. P.S Każdy kto udzieli sensownej odpowiedzi w moim temacie dostanie ode mnie `+`. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
datę/godzin,e nie zapisuj jako varchar, tylko jako TIME, lub date, lub datetime lub uniksowy znacznik czasu (integer zwracany przez php - time() lub mysql - now() )
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 88 Pomógł: 0 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
No dobrze.
Tylko jak w takim wypadku sprawdzić czy dany przedział czasowy nie jest zarezerwowany? Ten post edytował cabana 15.07.2011, 22:01:11 |
|
|
-Anomim- |
![]()
Post
#4
|
Goście ![]() |
Uniksowy znacznik czasu jest liczbą, może użyj operatorów < i >
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 31 Dołączył: 12.10.2008 Skąd: WAT Ostrzeżenie: (0%) ![]() ![]() |
a nie można po prostu:
? Jak będzie zero to jest git. Jak nie to się nakłada. @edit, machnąłem się w kierunkach nierówności (IMG:style_emoticons/default/wink.gif) Ten post edytował YaQzi 15.07.2011, 22:13:42 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
select count(id) from tabelA WHERE ( (START between 18:20 AND 19:10) OR (KONIEC between 18:20 AND 19:10) ) OR ( START <18:10 AND koniec > 19:20 )
zobacz czy zadziała |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 88 Pomógł: 0 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Wszystko fajnie.
Tylko jest jeszcze kwestia jak zapisać timestamp w bazie jeśli na stronie mam coś na wzór ramówki. Przykładowo użytkownik wybiera sobie dzień na przykład Wtorek i dodaje swoją akcję. I trzeba to zapisać w timestamp a timestamp zawiera rok, miesiąc, dzień, godzinę, minute i sekundę. Ten post edytował cabana 15.07.2011, 22:17:06 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 88 Pomógł: 0 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
select count(id) from tabelA WHERE ( (START between 18:20 AND 19:10) OR (KONIEC between 18:20 AND 19:10) ) OR ( START <18:10 AND koniec > 19:20 ) zobacz czy zadziała Twoje zapytanie w każdym wypadku zwraca true czyli, że każdy przedział czasowy jest zarezerwowany. tyle to ja wiem |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
1. Aktualnie na moim netbooku nie mam moliwości sprawdzenia czy kod działa, ale nie wiem jak to się stało że count zwraca typ boolean. Jeśli nikt nie rozwiąże Twojego problemu, jutro zobaczę jak to działa.
2. to w czym problem ? |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 88 Pomógł: 0 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
W tym problem, że dzisiaj mamy Piątek 2011-07-15
musiał bym sprawdzać jaki dziś jest dzień i data aby jakoś sprawdzić jaka data będzie we Wtorek 1. Aktualnie na moim netbooku nie mam moliwości sprawdzenia czy kod działa, ale nie wiem jak to się stało że count zwraca typ boolean. Jeśli nikt nie rozwiąże Twojego problemu, jutro zobaczę jak to działa. 2. to w czym problem ? Ad 1. Nie zwraca boolean tylko ja sobie sprawdzam ifem czy jest jakiś rekord jeśli tak zwracam true jeśli nie to false |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
date('w') - to Ci zwróci dzień tygodnia (0 - niedziela, 1 - poniedziałek itd.)
edit:// moje zapytanie w każdym wypadku zwróci 1 rekord (IMG:style_emoticons/default/wink.gif) Ten post edytował peter13135 15.07.2011, 22:46:36 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 88 Pomógł: 0 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
date('w') - to Ci zwróci dzień tygodnia (0 - niedziela, 1 - poniedziałek itd.) edit:// moje zapytanie w każdym wypadku zwróci 1 rekord (IMG:style_emoticons/default/wink.gif) no dobrze tylko w jaki sposób sprawdzić jaka data będzie we wtorek jeśli dziś mamy piątek? |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
jako drugi parametr podaj znacznik czasu interesującego cie dnia.
edit:// chyba źle Ci napisałem. musisz obliczyć różnicę między dzisiaj i wtorkiem, chyba z tym sobie poradzisz, wtorek według date('w') to 2, piątek to 5 no i potem dodaj do time() liczbę sekund odpowiadającą tej różnicy dni i wrzuć to jako drugi parametr date Ten post edytował peter13135 15.07.2011, 23:02:41 |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 88 Pomógł: 0 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
chyba sobie odpuszczę to sprawdzanie, ponieważ nie mam pojęcia jak to zrobić (IMG:style_emoticons/default/sad.gif)
edit: coś w ten deseń napisałem aby sprawdzić jaka data będzie w dany dzień
trochę długie ale działa Ten post edytował cabana 15.07.2011, 23:16:37 |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
tu masz różnice w dniach ale na wszelki wypadek sprawdź czy dobrze działa ten kod, bo już średnio myślę i nie mam jak sprawdzić. echo date('Y-m-d H:i:s', time()+60*60*24*$roznica) to ci powinno wyswietlic date jaka bedzie o we wtorek o tej samej porze co teraz (teraz - chwila odpalenia skryptu) |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 88 Pomógł: 0 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
jednak sobie odpuszczę (IMG:style_emoticons/default/smile.gif)
dzięki za wszelką pomoc |
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.09.2025 - 17:44 |