Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Select wg fragmentu datetime?
Forum PHP.pl > Forum > Bazy danych
warpech
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?
nospor
http://dev.mysql.com/doc/refman/5.0/en/dat...-functions.html
i wszystko jasne smile.gif
warpech
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
nospor
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
warpech
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?)
nospor
a, jak tak to tak smile.gif
po prostu dla przedzialu 21:00 a 21:59 tamten warunek byl smieszny winksmiley.jpg
warpech
cóż racja smile.gif
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.