Kto ma jutro urodziny?

Kto ma jutro urodziny?
Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
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

ML
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 869
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.

Misiekd
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7923
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

KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2520
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ł)

ZJ
  • Rejestracja: dni
  • Ostatnio: dni
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.

 
ML
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 869
0

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

  • Rejestracja: dni
  • Ostatnio: dni
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
Misiekd
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7923
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

vpiotr
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Kopiuj
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'))
  • Rejestracja: dni
  • Ostatnio: dni
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.

Misiekd
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7923
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.