Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL],[PHP] daty pomiędzy
marian84
post
Post #1





Grupa: Zarejestrowani
Postów: 185
Pomógł: 10
Dołączył: 29.01.2008

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


Witam.

Mam pewien problem z wyszukiwaniem wydarzeń pomiędzy datami ...

Przykład:
data rozpoczecia: 2013-01-01, data końca: 52013-05-01

Wyszukiwanie:
data od: 2012-12-24, data do: 2013-02-02

  1.  
  2. mysql_query('SELECT * FROM tabela WHERE date_start>="2012-12-24" AND date_end<="2013-02-02");
  3.  


Wydarzenie zostaje odnalezione

-----------------------------------------------------------

A co w przypadku wybrania daty:
od: 2.1.2013 do 4.01.2013

Brak wyników

-----------------------------------------------------------

Jak mogę skonstruować zapytanie do bazy by wywalilo mi również wydarzenia które aktualnie trwają?

Ten post edytował marian84 17.02.2013, 01:09:54
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
jacek21
post
Post #2





Grupa: Zarejestrowani
Postów: 52
Pomógł: 2
Dołączył: 13.06.2012

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


Nie sprawdzalem osobiscie, ale wydaje mi sie, ze between zalatwi sprawe, nawet znalazlem temat w ten deseń na forum:
http://forum.php.pl/index.php?showtopic=81624

Ten post edytował jacek21 18.02.2013, 11:21:10
Go to the top of the page
+Quote Post
Michasko
post
Post #3





Grupa: Zarejestrowani
Postów: 283
Pomógł: 31
Dołączył: 10.01.2006
Skąd: Działoszyn

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


Wnioskuję, że skoro daty mogą być wprowadzane na różne sposoby - to korzystasz z jakiegoś formularza. Może po prostu sformatuj sobie ten podawany string (zamień kropki i/lub inne znaki na myślniki) i już.
Go to the top of the page
+Quote Post
werek
post
Post #4





Grupa: Zarejestrowani
Postów: 25
Pomógł: 1
Dołączył: 24.04.2007
Skąd: wwa

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


pamiętaj że mysql wewnetrzne nie podane komponenty daty ustawia najniżej tak że twój select:

  1. SELECT * FROM tabela WHERE date_start>="2012-12-24" AND date_end<="2013-02-02"


w rzeczywistości interpretowany jest jako:

  1. SELECT * FROM tabela WHERE date_start>="2012-12-24 00:00:00" AND date_end<="2013-02-02 00:00:00"


wiec prawdopodobnie w tym tkwi twój błąd, staraj się dokładnie określać ramy czasowe vide:

  1. SELECT * FROM tabela WHERE
  2. (date_end>="2012-12-24 00:00:00" AND date_end<="2013-02-02 23:59:59")
  3. OR
  4. (date_start>="2012-12-24 00:00:00" AND date_start<="2013-02-02 23:59:59")
  5. ORDER BY date_start ASC


to załapie ci wszystkie trwajace w danym czasie imprezy niezależnie czy szachodzą początkiem czy końcem.
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: 18.09.2025 - 08:07