C# týden ITnetwork Flashka zdarma
Akce! Pouze tento týden sleva až 80 % na kurzy C# .NET. Lze kombinovat s akcí 50 % bodů navíc na prémiový obsah!
Brno? Vypsali jsme pro vás nové termíny školení Základů programování a OOP v Brně!
Avatar
Pokorný Martin:22.11.2018 14:35

Ahoj,

pokouším se (bohužel zatím marně) dát dohromady nějaký dotaz, který mi bude filtrovat záznamy na základě času.

Mám tabulku ve které jsou sloupce START_TIME a STOP_TIME a chtěl bych vybrat zaznamy, ktere jsou aktualni v danem okamziku

příklad č.1:
záznam1 - START_TIME=10:00:00, STOP_TIME =16:00:00
záznam2 - START_TIME=06:00:00, STOP_TIME =10:00:00

SELECT * FROM table WHERE ((start_time<='12:00:00') AND (stop_time>='12:00:00' ))

toto zafunguje správně a dotaz vrátí záznam číslo 1

příklad č.2:

záznam1 - START_TIME=10:00:00, STOP_TIME =02:00:00
záznam2 - START_TIME=06:00:00, STOP_TIME =10:00:00

SELECT * FROM table WHERE ((start_time<='12:00:00') AND (stop_time>='12:00:00' ))

toto NEzafunguje správně a dotaz záznam číslo 1 nevrátí ... - pokud je start/stop time před/za půlnoci, tak to nefunguje :(

Zkusil jsem:

SELECT * FROM table WHERE
((start_time<=TIME_FORMAT(NOW(), '%H:%i:%s')) AND (stop_time>=TIME_FORMAT(NOW(), '%H:%i:%s') ))
SELECT * FROM table WHERE ((start_time<='12:00:00') AND (stop_time>='12:00:00' ))

Chci docílit: časovač pro určitá zařízení - START_TIME - je čas zapnutí, STOP_TIME - čas vypnutí

 
Odpovědět 22.11.2018 14:35
Avatar
Jirka
Člen
Avatar
Odpovídá na Pokorný Martin
Jirka:22.11.2018 15:04

Ahoj.

Nešlo by použít typ sloupců, který by spojoval datum a čas dohromady? Jako DATETIME?

Nahoru Odpovědět 22.11.2018 15:04
Kdo nic nedělá, nic nezkazí.
Avatar
Odpovídá na Pokorný Martin
Pokorný Martin:22.11.2018 15:52

drobný update a posun vpřed:

funguje mi přechod přes půlnoc:

příklad č.3:
záznam1 - START_TIME=10:00:00, STOP_TIME =02:00:00
záznam2 - START_TIME=06:00:00, STOP_TIME =10:00:00

SELECT * FROM table WHERE (start_Time > stop_time AND '12:00:00' >= start_time) OR '12:00:00' between start_time and stop_time

zafunguje správně - vrátí záznam 1


*stále ale nefunguje varianta

START_TIME=23:00:00, STOP_TIME =16:00:00*

 
Nahoru Odpovědět 22.11.2018 15:52
Avatar
Odpovídá na Pokorný Martin
Pokorný Martin:22.11.2018 16:16

tak vyřešeno - už i tato varianta funguje :)
START_TIME=23:00:00, STOP_TIME =16:00:00
START_TIME=10:00:00, STOP_TIME =02:00:00
START_TIME=10:00:00, STOP_TIME =16:00:00

SELECT * FROM table WHERE
 ((start_time < stop_time) AND ('12:00:00' BETWEEN start_time and stop_time)) OR
((start_time > stop_time) AND NOT ('12:00:00' BETWEEN start_time and stop_time))
Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět 22.11.2018 16:16
Avatar
Jirka
Člen
Avatar
Odpovídá na Pokorný Martin
Jirka:22.11.2018 16:56

Blahopřeju :)

Nahoru Odpovědět  +1 22.11.2018 16:56
Kdo nic nedělá, nic nezkazí.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.