Autor Zpráva
Karlos007
Profil *
Dobry den,
poradte mi prosim jaky udelat spravny dotaz na to abych z MySQL vytahl vsechny zaznamy ze sloupce narozeniny(DATE) z obdobi -7 az +31 dni ode dneska a vypsal je podle tech datumu.
Ja jsem to v pohode(aspon jsem si myslel) udelal pres DAYOFYEAR, a order by dayofyear(narozeniny) ale prech chvili mi doslo a prakticky jsem si overil ze v obdobi kolem novyho roku je to nefunkcni resp. spatne funkcni. predem dekuji za kazdou dobrou radu
jozob
Profil
Karlos007
Riešenie by mohlo byť pomocou timestamp - trošku matematiky.
Karlos007
Profil *
No ale tam mi to zase setridilo nejdriv podle roku, pak mesice a pak dne. takze by to bylo podle veku dotycnych, ale ja potrebuju aby to bylo podle data v roce.

ja potrbuju se dostat nejak k tomu abych mel treba:
30. 12. Petr 8 let
31. 12. Pavel 50let
1. 1. Ota 12let
20. 1. Jarda 40let
jozob
Profil
Karlos007
A čo použiť DAYOFYEAR a potom len zisťovať, či ide o prelom roku a ak áno, tek to ošetríš.
Karlos007
Profil *
hm asi mi nic jineho nezbyde, sakra, to jsem se do toho zamotal... no dam to do ToDo, konec roku je jeste daleko:-)

kazdopadne kdyby nekdo vedel nejaky jednoduchy figl, nebo toto mel naprogramovane tak prosim pisnete
YoSarin
Profil

WHERE (DATEDIFF(narozeniny,CURDATE()) >= -7 AND DATEDIFF(narozeniny,CURDATE()) <= 31) ORDER BY narozeniny;


Nezkoušel jsem, ale snab ny mělo fungovat...


update:
zaměnil jsem OR za AND... - opraveno
Karlos007
Profil *
Tak kdyz to mam ve skriptu tak to haze:
mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/....

Pri DQL dotazu pres phpmyadmina:
MySQL hlásí:
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(narozeniny,CURDATE()) >= -7 AND DATEDIFF(narozeniny,CURDATE()) <= 31


mam mysql 4.0.25, muze byt chyba v jeho nizke verzi?
YoSarin
Profil
aha, to je možný... já to testoval na 5.0...
Nebo zkontroluj, jestli se ten sloupeček opravdu jmenuje "narozeniny" ;)
YoSarin
Profil
jo, tak to asi bude tim, protože: DATEDIFF() was added in MySQL 4.1.1.
(alespoň mi to tvrdí manuál pro MySQL 4.1)
Karlos007
Profil *
Poradi nekdo jak to poresit kdyz mam MySQL ve verzi ktera neposkytuje DATEDIFF ???
Karlos007
Profil *
YoSarin: a navic ted mi doslo ze ten tvuj dotaz nic nevybere protoze ty zaznamy maji jine roky, takze by mi to vybralo jen novorozence apod.
Karlos007
Profil *
YoSarin: a navic ted mi doslo ze ten tvuj dotaz nic nevybere protoze ty zaznamy maji jine roky, takze by mi to vybralo jen novorozence apod.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0