Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Select wg fragmentu datetime?
warpech
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 3.10.2003
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Mam tabelę MySQL, w której znajduje się kolumna created_time typu datetime.

1. Chcę wybrać z tabeli wszystkie rekordy nagrane np. między godziną 21 a 22 (bez względu na datę).

Rozumiem że mogę napisać:
  1. SELECT * FROM TABLE WHERE created_time LIKE '% 21:%'


ale to brzydkie, mało wydajne, głupie w użyciu w przypadku większego przedziału godzinowego i w dodatku nie rozwiązuje mojego drugiego problemu, czyli:

2. Chcę wybrać z tabeli wszystkie rekordy nagrane w wybrany dzień tygodnia.

jakieś pomysły?
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




http://dev.mysql.com/doc/refman/5.0/en/dat...-functions.html
i wszystko jasne (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
warpech
post
Post #3





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 3.10.2003
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


dzięki za link, rzeczywiście to dość proste:

1.
  1. SELECT * FROM TABLE WHERE HOUR(created_time)>=21 AND HOUR(created_time)<22


2.
  1. SELECT * FROM TABLE WHERE DAYOFWEEK(created_time) = 1
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




w tym pierwszym to chyba blad masz? Przeciez w tej chwili to zawsze tylko lyknie 21. Powinnno byc <=22

edit: chyba ze ci chodzi tylko z godziny 21, to wogole powinno byc tylko:
  1. SELECT * FROM TABLE WHERE HOUR(created_time)=21
Go to the top of the page
+Quote Post
warpech
post
Post #5





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 3.10.2003
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


może przedział był niewystarczająco dobrze zdefiniowany. Dla przykładu inny przedział - rekordy nagrane pomiędzy 8 rano a 16 wygląda tak:

  1. SELECT * FROM TABLE WHERE HOUR(created_time)>=8 AND HOUR(created_time)<16


takie zapytanie obejmuje godziny od 08:00:00 do 15:59:59 (jeśli dobrze rozumiem?)
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




a, jak tak to tak (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
po prostu dla przedzialu 21:00 a 21:59 tamten warunek byl smieszny (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
warpech
post
Post #7





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 3.10.2003
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


cóż racja (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.08.2025 - 13:32