![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 106 Pomógł: 0 Dołączył: 11.03.2007 Skąd: Łódzkie Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam taki problem powiedzmy, że jest tabela Tabela : i posiada kolumny : data | zdarzenie przykładowe dane w tabeli: 2012-06-10 | ogien palił sie gdzies 2000-02-20 | był dzis potop 1993-09-28 | trzesienie ziemi 2003-12-03 | kometa przeleciała obok 1942-08-25 | mis polski wygrala i tak dziś powiedzmy mamy date 2012 - 08 - 23 a ja chciałbym, aby moje pytanie wybrało najbliższą przyszłą możliwą date bez uwzględnienia roku czyli w tym przypadku chciałbym aby mi wybrało date 1942 - 08 - 25 ( mis polski wgrała) a jak będzie dzień 2012 - 12 - 20 to żeby wybrało mi date 2000- 02 - 20 (był dziś potop) jak to zrobić(IMG:style_emoticons/default/questionmark.gif) program ma służyć do wybierania najbliższej rocznicy jakiś zdarzeń które są w bazie. --------------------- Mi narazie udało sie dojść do takiej wersji: najpierw sprawdzam czy w bazie znajduje wyższy numer dnia od dzisiejszego. Kod SELECT * FROM EVENTS WHERE TYPE = '0' AND DAYOFYEAR( DATE ) > DAYOFYEAR( NOW( ) ) ORDER BY DATE DESC LIMIT 1 a jesli nie ma wyniku to ustawiam date na 1 stycznia jakiegoś tam roku i sprawdzam drugi raz... no ale chodzi mi oto zeby załatwić w 1 pytaniu więc proszę o pomoc. Ten post edytował japolak 23.08.2012, 17:42:14 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 282 Pomógł: 89 Dołączył: 12.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
Samo DAYOFYEAR(data) będzie powodować problemy w latach przestępnych.
Należałoby zamiast tego obliczać numer dnia rocznicy w bieżącym roku, skoro porównujemy to do aktualnej daty, czyli
Natomiast do ORDER BY można wrzucić CASE, jeśli dana rocznica w tym roku już minęła dodajemy do niej liczbę dni w bieżącym roku. Ostatecznie mogłoby wyglądać to tak:
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 340 Pomógł: 49 Dołączył: 3.07.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
albo inaczej..... (IMG:style_emoticons/default/arrowheadsmiley.png)
pisane z palca |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 106 Pomógł: 0 Dołączył: 11.03.2007 Skąd: Łódzkie Ostrzeżenie: (0%) ![]() ![]() |
Dzieki pmir13 (IMG:style_emoticons/default/exclamation.gif) twój sposób działa idelanie.
bpskiba - A tu coś nie do końca wychodzi. ---------------------- po przemyśleniu tego tematu doszedłem do wniosku, że jeszcze czegoś mi brakuje.. a mianiowicie. w bazie danych mam zapisywany dokładny czas - czyli jeszcze godzina minuta sekunda wiec teraz mam dylemat co jeśli w danym dniu bede miał 2 zdarzenia.. aby wybrał najpierw ten z godziny 10 rano .. a po tej godzinie wybierał następny z godziny 15 (IMG:style_emoticons/default/questionmark.gif) ? da rade jeszcze zrobić to w tym zapytaniu czy odpuścić sobie i zapytać przez php?? Ten post edytował japolak 23.08.2012, 21:38:00 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 282 Pomógł: 89 Dołączył: 12.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
Przy dokładniejszej dacie rezygnujemy całkowicie z dayofyear() i po prostu obliczamy datę najbliższej rocznicy, jeśli wyjdzie nam, że w tym roku już była, to dokładamy 1 rok:
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 106 Pomógł: 0 Dołączył: 11.03.2007 Skąd: Łódzkie Ostrzeżenie: (0%) ![]() ![]() |
Przy dokładniejszej dacie rezygnujemy całkowicie z dayofyear() i po prostu obliczamy datę najbliższej rocznicy, jeśli wyjdzie nam, że w tym roku już była, to dokładamy 1 rok:
działa - dzięki.. musze kiedyś sam poczytać jak działać z tymi instrukcjami warunkowymi z mysql .. bo widać znacznie można ułatwic sobie życie.. Dzieki jeszcze raz.. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 04:18 |