Kto ma jutro urodziny?

0

Witam!
Jak z postgreSQLa wyciągnąć informację, kto ma jutro urodziny? Kombinuję na wiele sposobów i nie wychodzi tak jak bym chciał...

Z góry dzięki

0

Nie wiem jak w Postgrsie to wygląda ale ogólnie musisz porównać miesiąc i dzień daty urodzenia z miesiacem i dniem daty jutrzejszej.

2
krwq napisał(a)

http://wiki.postgresql.org/wiki/Working_with_Dates_and_Times_in_PostgreSQL#You_may_add_or_subtract_an_INTEGER_to_a_DATE_to_produce_another_DATE

ale jakie dodawanie lat???? Rozbijasz datę urodzin na dzień i miesiąc i jutrzejszą datę na dzień miesiąc i porównujesz. Mam wrażenie, że niektórzy zamiast używać najprostszych rozwiązań myślą tylko jak tu sobie życie skomplikować

BTW date_part albo extract + dokumentacja

0

a jeśli dzisiaj byłby 28 luty 2001, a ktoś miałby urodziny 29 lutego, to chyba mogę śmiało powiedzieć że jutro ma urodziny? (tylko zastanawiam się czy 1 marca będę też mógł powiedzieć że wczoraj miał)

1

Jak ma urodziny 29 lutego i nie jest rok przystępny, to ma urodziny 28 lutego. Tak jest liczone np. dla pełnoletności. Z kodeksu cywilnego:

Art. 112. Termin oznaczony w tygodniach, miesiącach lub latach kończy się z upływem dnia, który nazwą lub datą odpowiada początkowemu dniowi terminu, a gdyby takiego dnia w ostatnim miesiącu nie było - w ostatnim dniu tego miesiąca. Jednakże przy obliczaniu wieku osoby fizycznej termin upływa z początkiem ostatniego dnia.

 
0

Czyli porównujemy miesiąc i dzień a na 29 lutego robimy wyjątek. Nie ma co komplikować.

1

Ale samo porównanie miesiąca i dnia będzie raczej skomplikowane:

  • po 31.03 jest 1.04
  • po 31.12 jest 1.01
  • po 30.03 jest 31.03
  • po 30.04 jest 1.05
1
bo napisał(a)

Ale samo porównanie miesiąca i dnia będzie raczej skomplikowane:

  • po 31.03 jest 1.04
  • po 31.12 jest 1.01
  • po 30.03 jest 31.03
  • po 30.04 jest 1.05

ale kogo to obchodzi??? Chyba, że chcesz zamienić DZISIEJSZĄ datę na miesiąc i dzień i dopiero takie coś zwiększać o jeden. No ale wtedy zamiast programowaniem powinieneś się zająć szydełkowaniem

0

Spróbuj coś takiego (dob = data urodzenia)

SELECT * from uzytkownicy u
where 
  EXTRACT(DAY FROM u.dob) = EXTRACT(DAY FROM (current_date + integer '1'))
  and
  EXTRACT(MONTH FROM u.dob) = EXTRACT(MONTH FROM (current_date + integer '1'))
1

@Misiekd, rozbijanie na dzień i miesiąc to Twój pomysł.

Rozbijasz datę urodzin na dzień i miesiąc i jutrzejszą datę na dzień miesiąc i porównujesz.

Ja bym na niego nie wpadł nawet w stanie upojenia alkoholowego.

1
bo napisał(a)

@Misiekd, rozbijanie na dzień i miesiąc to Twój pomysł.

Rozbijasz datę urodzin na dzień i miesiąc i jutrzejszą datę na dzień miesiąc i porównujesz.

czytanie ze zrozumieniem się kłania. Napisałem JUTRZEJSZĄ datę a nie dzisiejszą.

Ja bym na niego nie wpadł nawet w stanie upojenia alkoholowego.

co tylko potwierdza fakt, że programowanie nie jest dla ciebie

1 użytkowników online, w tym zalogowanych: 0, gości: 1