Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Postgresql] pobranie userów, którzy mają urodziny pomiędzy dwiema datami
rasten
post
Post #1





Grupa: Zarejestrowani
Postów: 86
Pomógł: 6
Dołączył: 31.05.2010

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


Witam, jak w temacie
mam duży problem z pobraniem użytkowników z kolumną 'data_ur', którzy mają urodziny między dwiema datami. Nawet nie wiem jak to ugyźć;/ Macie jakiś pomysł?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
skowron-line
post
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


http://www.postgresql.org/docs/8.2/static/...comparison.html


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
rasten
post
Post #3





Grupa: Zarejestrowani
Postów: 86
Pomógł: 6
Dołączył: 31.05.2010

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


Cytat

dziękuję operatory znam, ale to mi nic nie daje.
Np:
data urodzienia: 1990-01-01
dwie daty: od 2010-05-10 do 2010-10-11 albo jeszcze gorsza sytuacja gdy lata się róznią, czyli np. 2009-07-10 do 2011-02-01.
Wie ktoś jak to rozwiązać?

EDIT// dlaczego ktoś mi to przeniósł do przedszkola? Skoro rozwiązanie jest takie proste i oczywiste to może jakieś wskazówki?

Sam sobie po długich bojach poradziłem, czy jest to wydajne, nie wiem ale działa
Z podziękowaniami dla moderatora, który przeniósł ten wątek do 'przedszkola'... (sarkazm ofkorz)
  1. WHERE
  2. (
  3. -- łączymy date urodzenia w format: rok_date_from-miesiac_urodzenia-dzien_urodzenia
  4. SELECT date_part('year', event.date_from) || '-' || to_char(rs2.birthdate, 'MM-DD')
  5. FROM reservations
  6. INNER JOIN reservations_users AS rs2 ON rs2.idreservations = reservations.idreservations
  7. INNER JOIN event ON event.idevent = reservations.idevent
  8. WHERE reservations.idevent = 27 AND rs2.idreservations_users = reservations_users.idreservations_users
  9. )::date BETWEEN event.date_from AND event.date_to
  10.  
  11. "


Ten post edytował rasten 15.03.2012, 17:52:15
Go to the top of the page
+Quote Post
skowron-line
post
Post #4





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


@rasten dobry as jesteś
w linku który Ci podałem to 1 przykład
Cytat
a BETWEEN x AND y


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
rasten
post
Post #5





Grupa: Zarejestrowani
Postów: 86
Pomógł: 6
Dołączył: 31.05.2010

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


Ty też dobry as jesteś. Between znam, ale zauważ żeby go w końcu użyć musiałem wcześniej nieźle nakombinować: podzapytanie w WHERE, użycie funkcji date_part i to_char, konkatenacja (czy jak to się tam nazywa) wyników tych funkcji a potem jeszcze rzutowanie tego wszytkiego na typ 'date'. Niemniej dzięki za chęć pomocy.

Dla zainteresowanych objaśnienie: żeby sprawdzić czy ktoś ma urodziny między podanymi datami (date_from i date_to ), zamieniam rok w dacie urodzenia na ten, który jest w date_from.
  1. SELECT date_part('year', event.date_from) || '-' || to_char(rs2.birthdate, 'MM-DD')

rzutuje to na datę i dopiero wtedy używam BETWEEN.

Rozwiązanie mało eleganckie (tak mi się wydaje) także jak ktoś ma lepsze chętnię się zapoznam.
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 Aktualny czas: 19.08.2025 - 17:54