![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 110 Pomógł: 10 Dołączył: 3.09.2006 Skąd: Bishop Auckland Ostrzeżenie: (0%) ![]() ![]() |
Wprawdzie rozwiązałem już problem, o których chciałem wcześniej pisać (innym sposobem), to nadal mam niejasną sprawę do jednej rzeczy:
Staram się tworzyć coraz bardziej skomplikowane zapytanie do mojej bazy danych, aby się podszkolić i zyskać na czasie etc. Chciałem sprawdzić dwa pola w jednej tabeli. Są to daty, ale (mój błąd - wiem) pola te są varchar a nie date, datetime czy timestamp. Mimo to chciałem wyświetlić wszystkie rekordy, które mieszczą się w danym przedziale czasowym. Na początku myślałem, że z powodu typu pola w tabeli coś może nie działać, ale poniższe zapytanie przyniosło oczekiwane rezultaty:
Jednak przez dwie godziny nie mogłem pojąć dlaczego nie działa zapytanie następujące:
Powyższe zapytanie spowoduje wyświetlenie wszystkich rekordów tak jakby nie było w ogóle konstrukcji WHERE... Próbowałem różnych sposobów(konwersja typu zmiennych, cudzysłowa zamiast apostrofów). Jednak nie znalazłem żadnego rozwiązania. Byłbym wdzięczny gdyby ktoś rozjaśnił mi sytuację ![]() Ten post edytował TheaSiX 21.04.2009, 21:17:18 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 176 Pomógł: 31 Dołączył: 26.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
u mnie wyswietla prawidlowo, dziwne..
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 110 Pomógł: 10 Dołączył: 3.09.2006 Skąd: Bishop Auckland Ostrzeżenie: (0%) ![]() ![]() |
Rozwinę swój przykład. Mam listę z której można wybrać dany miesiąc. Później metodą POST przesyłam to do kodu, który ma za zadanie wyciągnąć dane tylko z tego miesiąca. Oto schemat w jaki buduję zapytanie:
Proszę o nie komentowanie samego sposobu. Wiem, że może wydawać się on dziwny i bardzo lamerski. Zmieniłem już wszystko, ale nadal chciałbym znaleźć wytłumaczenie dlaczego powyższy kod nie chce działać.. Ten post edytował TheaSiX 21.04.2009, 20:09:04 |
|
|
![]()
Post
#4
|
|
![]() Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź ![]() |
Może dlatego, że Ty przesyłasz daty w postaci RRRR.MM.DD, a MySQL przechowuje je w postaci RRRR-MM-DD ? (pole DATETIME)
. Albo dlatego: Cytat expr BETWEEN min AND max - cytat z http://dev.mysql.com/doc/refman/5.1/en/com...perator_between
If expr is greater than or equal to min and expr is less than or equal to max, BETWEEN returns 1, otherwise it returns 0. This is equivalent to the expression (min <= expr AND expr <= max) if all the arguments are of the same type. Otherwise type conversion takes place according to the rules described in Section 11.2.2, “Type Conversion in Expression Evaluation”, but applied to all the three arguments. mysql> SELECT 1 BETWEEN 2 AND 3; -> 0 mysql> SELECT 'b' BETWEEN 'a' AND 'c'; -> 1 mysql> SELECT 2 BETWEEN 2 AND '3'; -> 1 mysql> SELECT 2 BETWEEN 2 AND 'x-3'; -> 0 For best results when using BETWEEN with date or time values, you should use CAST() to explicitly convert the values to the desired data type. Examples: If you compare a DATETIME to two DATE values, convert the DATE values to DATETIME values. If you use a string constant such as '2001-1-1' in a comparison to a DATE, cast the string to a DATE. -------------------- Life's simple... You make choices and don't look back...
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 110 Pomógł: 10 Dołączył: 3.09.2006 Skąd: Bishop Auckland Ostrzeżenie: (0%) ![]() ![]() |
tak tylko w mysqlu datę przechowuję w postaci varchar a nie datetime
i wszystkie daty w bazie są w postaci dd.mm.yyyy Ten post edytował TheaSiX 21.04.2009, 20:46:06 |
|
|
![]()
Post
#6
|
|
![]() Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź ![]() |
Hmm, naprawdę dziwne, bo u mnie też działa
A sprawdzałeś gołe zapytanie w bazie danych? (np. w phpMyAdminie) Zwraca prawidłowo wyniki? -------------------- Life's simple... You make choices and don't look back...
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 110 Pomógł: 10 Dołączył: 3.09.2006 Skąd: Bishop Auckland Ostrzeżenie: (0%) ![]() ![]() |
@blooregard nawet ten drugi przykład u Ciebie działa? to naprawdę dziwne
@zelu zauważ , że stringi $first oraz $year zawierają już kropki.. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 229 Pomógł: 34 Dołączył: 7.12.2008 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
@TheaSiX
Zauwazylem, dlatego usunalem posta ![]() A jaki blad zwraca Ci MySQL? Ten post edytował zelu 21.04.2009, 21:06:39 |
|
|
![]()
Post
#9
|
|
![]() Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
a pytanie Ty pracujesz w MsSQL'u czy w MySQL'u? bo temat mówi co innego a wy rozmawiacie o czym innym.
-------------------- |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 110 Pomógł: 10 Dołączył: 3.09.2006 Skąd: Bishop Auckland Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#11
|
|
![]() Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
a takie coś co Ci zwraca?
#EDIT kropki mi się pozjadało. Ten post edytował piotrooo89 22.04.2009, 07:39:42 -------------------- |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 110 Pomógł: 10 Dołączył: 3.09.2006 Skąd: Bishop Auckland Ostrzeżenie: (0%) ![]() ![]() |
edit-- gdy użyje takiego kodu:
otrzymuje komunikat:
Ten post edytował TheaSiX 21.04.2009, 22:15:24 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 229 Pomógł: 34 Dołączył: 7.12.2008 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Daj sobie echo z zapytania i doprowadź je do formatu
Kombinuj z apostrofami i cudzysłowami, np
Ten post edytował zelu 21.04.2009, 22:30:09 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.06.2025 - 00:59 |