![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 4 Dołączył: 3.06.2008 Ostrzeżenie: (0%)
|
Jest taka tabela (w pseudokodzie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ):
user { nazwisko VARCHAR(255), birthdate DATE } Jak zadac zapytanie do bazy, ktore pobierze te wiesze z tej tabeli, dla ktorych uzytkownicy obchodza urodziny w przeciagu np. 7 dni od dzisiaj (to znaczy od daty wywolania tego zapytania)? Mecze sie juz pol dnia i nie moge nic sensownego wymyslic. |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%)
|
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 121 Pomógł: 26 Dołączył: 2.07.2007 Ostrzeżenie: (0%)
|
Wyciągnięte ze starego skryptu działającego podobnie, powinno się nadać:
Ten post edytował singles 4.06.2009, 07:49:32 |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 4 Dołączył: 3.06.2008 Ostrzeżenie: (0%)
|
Napisalem takie zapytanie
I wyskakuje blad nr 1142. A co wiecej nie wiem gdzei w tym zap. jest blad. Skladniowo wyglada poprawnie. Przynajmniej jak dla mnie :/ I przepraszam ze po tak dlugim czasie odpisuje. Troszke zajety bylem innymi projektami |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%)
|
|
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 4 Dołączył: 3.06.2008 Ostrzeżenie: (0%)
|
Po usunieciu DATE_FORMAT nadal jest blad choc juz inny: #1142
Chociaz wydaje mnie sie ze DATE_FORMAT powinien byc skoro chce wyluskac tylko fragment daty, miesiac i dzien. Dlaczego mi to nie dziala? Pomalu juz trace nadzieje _____ Edit: ______________ Dziala (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Napisalem cale zapytanie recznie od poczatku. Widocznie byla jakas literowka. A jeszcze mi powiedzcie taka rzecz, ktorej nie mam jak sprawdzic bo nie mam aktualnie uprawnien do zmiany daty w BIOSie. Czy takie zapytanie podane przez singles bedzie dzialac w przypadku gdy jest aktualnie np 28 Grudnia a ktos ma wpisana date urodzin na 1 Stycznia? Ten post edytował MySQL 12.06.2009, 09:22:49 |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 62 Pomógł: 4 Dołączył: 24.08.2006 Ostrzeżenie: (0%)
|
|
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 4 Dołączył: 3.06.2008 Ostrzeżenie: (0%)
|
Ooo a to jest niezle rozwiazanie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) proste i przejrzyste. Jednakze ma jedna wade. Nie zadziala w przypadku gdy bylby obecnie np. 30 grudnia 2009, a ktos obchodzilby urodziny za pare dni np. 01 stycznia. Wowczas argumenty DATEDIFF bylyby nastepujace:
DATEDIFF('2009-01-01', '2009-12-30') A warunek bylby nastepujacy:
DATEDIFF zwroci wynik -363, a -363 nie nalezy do przedzialu [0, 7]. Ale mozna to prosto poprawic dodajac kolejny warunek
Nie ma tutaj znaczenia takze przestepnosc roku. Zatem cale zapytanie ma postac: Kod SELECT login FROM user WHERE ( DATEDIFF(CONCAT(YEAR(NOW()), '-', MONTH(birthdate), '-', DAY(birthdate)), NOW()) >= 0 AND DATEDIFF(CONCAT(YEAR(NOW()), '-', MONTH(birthdate), '-', DAY(birthdate)), NOW()) <= 7 ) OR ( DATEDIFF(CONCAT(YEAR(NOW()) + 1, '-', MONTH(birthdate), '-', DAY(birthdate)), NOW()) >= 0 AND DATEDIFF(CONCAT(YEAR(NOW()) + 1, '-', MONTH(birthdate), '-', DAY(birthdate)), NOW()) <= 7 ) Uzylem kodu bo znaczniki [sql] rozkrzaczyly mi caly kod (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Wszystkim dziekuje za pomoc |
|
|
|
![]() ![]() |
|
Aktualny czas: 26.12.2025 - 00:51 |