Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MYSQL]Źle podaje wyniki między (BETWEEN)
palixmp
post 27.08.2008, 18:42:34
Post #1





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 19.07.2006

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


Witam. Mam takie oto zapytanie:
  1. SELECT IDZam, NazwaOdbiorcy, DataZamowienia, StanRealizacji FROM ZAMOWIENIE WHERE StanRealizacji='N' AND NazwaOdbiorcy='Nowak' AND (DataZamowienia BETWEEN '2008-08-20' AND '2008-08-27' );


I owo zapytanie nie pokazuje mi zamówień z dnia 2008-08-27 dlaczego?? Pole DataZamowienia ma taką postać 2008-08-27 19:19:39 . Jeśli np wybiore datę 2008-08-28 to te zamówienia z dnia 2008-08-27 się dopiero pokazuja, dlaczego??

Umial by ktoś na to odpowiedziec??

Z góry dzieki
Go to the top of the page
+Quote Post
kaem
post 27.08.2008, 18:54:19
Post #2





Grupa: Zarejestrowani
Postów: 248
Pomógł: 38
Dołączył: 29.06.2008

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


Polecam manuala http://dev.mysql.com/doc/refman/5.0/en/com...perator_between
a w szczególności ten fragment
Cytat
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.

Chyba powinno pomóc.

Ten post edytował kaem 27.08.2008, 18:55:14
Go to the top of the page
+Quote Post
JoShiMa
post 28.08.2008, 08:05:54
Post #3





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


  1. (DataZamowienia BETWEEN '2008-08-20 00:00:00' AND '2008-08-27 23:59:59' );


Domyślnie jeśli masz pole datetime (data+godzina) to 2008-08-27 oznacza 2008-08-27 00:00:00

Ten post edytował JoShiMa 28.08.2008, 08:07:20


--------------------
Go to the top of the page
+Quote Post
palixmp
post 28.08.2008, 22:16:02
Post #4





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 19.07.2006

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


Dzieki JoShiMa za podpowiedźexclamation.gif Właśnie z tym mam problem, może będziesz umiałm mi pomoc:) mam takei zapytanie:
  1. (DataZamowienia BETWEEN CAST('$OD' AS DATETIME) AND CAST('$DO' AS DATETIME))

zmienne OD i DO przekazywane są z takiego tam skryptu kalendarza, który przekazuje tylko np. 2008-08-28, a mi są potrzebne całe wartości razem z godziną.

Wiec moje pytanie, jak dodać godziny do tych zmiennych? Próbowałem coś takiego:
  1. (DataZamowienia BETWEEN CAST('$OD' || '00:00:00' AS DATETIME) AND CAST('$DO' || '23:59:59' AS DATETIME))


Bo chodzi o to żeby do zmiennej OD dodal 00:00:00 a do zmiennej DO 23:59:59, żeby byly całe dnie. Próbowałem przez CONCAT czyli || ale niestety to nie dziala:(

Pomoże ktośquestionmark.gif

A moze przy nadawaniu nazw zmiennych mozna jakoś dodać te wartości godziny?? Chodzi mi o to miejsce:
  1. <?php
  2. $OD = $_POST['OD'];
  3. $DO = $_POST['DO'];
  4. ?>

Jakoś +'00:00:00:', abo jakis inny sposób??

Ten post edytował palixmp 28.08.2008, 22:22:44
Go to the top of the page
+Quote Post
JoShiMa
post 29.08.2008, 08:09:16
Post #5





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


A nie wystarczy po prostu:
  1. <?php
  2. $OD = $_POST['OD'].'00:00:00';
  3. $DO = $_POST['DO'].'23:59:59';
  4. ?>


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 15.08.2025 - 04:00