![]() |
![]() |
![]()
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%) ![]() ![]() |
...wygląda to tak (jest lepiej ale nie do końca):
$wynik = mysql_query ("SELECT CONCAT('rok',':',miesiac,':',dzien) FROM baaazzza ;") or die ("błąd w pytaniu"); daje w wyniku np. 1986:07:02 jak nie dam dwukropków to bez nich, ciągiem: 19860702. Jak zamiast roku dam '2017' to: z 2017 na początku $d1=date("Y-m-d"); // bieżąca data. $wynik = mysql_query ("SELECT *, CONCAT('rok',':',miesiac,':',dzien) AS trele FROM baaazzza WHERE '$d1' < 'trele' ;") or die ("błąd w pytaniu"); to znajduje mi chyba wszystkie dane (czyli 100% linii) a wszystkie daty złożone, są MNIEJSZE od dnia dzisiejszego...? są tam lata 1978, 1982 itp. --- czyli czyta jakoś dziwnie. Jeżeli odwrócę znak w przeciwną stronę ">" nie znajduje nic. Próbowałem dodawać abstrakcyjnie wielkie wartości (np. 1000000) ale jak nie znajduje to nie znajduje. jeżeli "trele" zrobię tak: '$d1' > date('trele') --- to nie pokazuje błędu ale nic nie znajduje. -------------- dalsze eksperymenty z KOLEJNY DZIEŃ ROKU: "trele" w DAYOFYEAR(date(trele)) ::: ... WHERE DAYOFYEAR('$d1')-2 < DAYOFYEAR(date(trele)) ---- pokazuje błąd w zapytaniu ... WHERE DAYOFYEAR('$d1') > DAYOFYEAR(date('trele')) ----- również "<" nic nie znajduje ... WHERE DAYOFYEAR('$d1') > DAYOFYEAR(date(trele)) ----- bez apostrofów - oczywiście pokazuje błąd zapytania ... WHERE DAYOFYEAR('$d1') > DAYOFYEAR('trele') ----- również "<" nic nie znajduje zapewne to moje "trele" nie jest widziane jako data. (IMG:style_emoticons/default/questionmark.gif) ? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.10.2025 - 10:21 |