![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dzień dobry.
Przeszukałem TO forum ale nie znalazłem odpowiedzi... W bazie danych MySQL mam kolumny "dzien" , "miesac" i "rok" (taką mam konieczność dla innych potrzeb). Muszę wyselekcjonować dane dane nie starsze niż 21 dni od ROCZNICY danego pana. Dlatego staram się w zapytani SELECT z istniejących danych stworzyć datę "oszukaną" z wstawionym bieżącym rokiem, i porównać ją z dzisiejszą ustawiając warunek różnicy 21 dni. Próbowałem przeróżne przekształcenia i za każdym razem jest źle. załóżmy że baza wygląda podobnie: id imie nazwisko funkcja rok miesiac dzien rola uwagi 1 Jan Pierwszy RR 1967 12 03 AA brak 2 Piotr Drugi KD 1986 01 22 FT brak 3 Olaf Trzeci JY 2001 11 15 KF brak Próbowałem na prostych i poprawnych - nie działało. Próbowałem innych przeróżnych i dziwnych kombinacji i nic... Zrobiłem nawet tak dziwaczne pytanie : $wynik = mysql_query ("SELECT * FROM baaazzza WHERE DATEDIFF( ('2017-miesiac-dzien'), '2017-11-08') < 21 ;") or die ("błąd w pytaniu"); i też nic Chyba się zapędziłem w ZŁE myślenie. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
popełniłem literówkę i dlatego był błąd. Teraz nie pokazuje żadnego komunikatu i nie zatrzymuję się tutaj, wykonuje dalszą część strony bez błędu. Tak to wygląda (wersja pierwsza):
$wynik = mysql_query ("SELECT * FROM baaazzza WHERE DATEDIFF(CONCAT('2017','miesiac','dzien'), '2017-11-08') < 21 ;") or die ("błąd w pytaniu"); sprawdziłem też "dziwactwa" ale też żadnej reakcji $wynik = mysql_query ("SELECT * FROM baaazzza WHERE DATEDIFF(CONCAT(2017,miesiac,dzien), '2017-11-08') < 21 ;") or die ("błąd w pytaniu"); $wynik = mysql_query ("SELECT * FROM baaazzza WHERE DATEDIFF(CONCAT(2017, miesiac, dzien), '2017-11-08') < 21 ;") or die ("błąd w pytaniu"); przy próbach bez " DATEDIFF " rezultat identyczny - die ("błąd w pytaniu")... przy próbach z zastosowanie przekształcenia przez " DATE_FORMAT " również nic.. eksperymentując zrobiłem: $wynik = mysql_query ("SELECT * FROM baaazzza WHERE ('2017-01-08' - rok-miesiac-dzien) > 21 ;") or die ("błąd w pytaniu"); wyszukuje mi ale błędne wyniki, zupełnie nie wiem jaką zasadą się kieruje. Najpierw myślałem, że bierze tylko pierwszą wartość czyli "rok" - ale nie, doszedłem do wniosku, że odejmuje wszystkie wartości od siebie (IMG:style_emoticons/default/questionmark.gif) ale też chyba nie bo z czym by porównywał. Jeżeli zamiast wartości 21 wiszę 1997 to przestaje szukać... Zagubiłem się |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.10.2025 - 10:55 |