![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 12.06.2002 Skąd: opole/wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam,
przechowuje w tabeli dane klientów - ok 40 pól. Jednym z nich jest data urodzenia w formacie timestamp. Jestem teraz w trakcie robienia wyszukiwarki. Moje pytanie jest następujące: Jak napisać zapytanie, które zwróci mi klientów z określonego przedziału wiekowego (od ... do ...). Podkreślam, że chciałbym zrobić to z poziomu mysql'a za pomocą jednego zapytania (tzn bez wczesniejszego pobierania wartości pola data_urodzenia z tabeli, obliczania przedzialu, który pożniej wykorzystamy w drugim zapytaniu) ... Mam nadzieje ze nie za bardzo namieszałem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) pozdrawiam Lechu |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 28.07.2004 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 848 Pomógł: 0 Dołączył: 7.07.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Jedna uwaga: zmienne w MySQL są przedstawiane jako 'zmienna' a nie '$zmienna' (ewentualnie $zmienna jeśli jest zmienną php)
Ten post edytował Vertical 10.03.2005, 19:09:19 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 12.06.2002 Skąd: opole/wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat(SamoChwała @ 2005-03-10 16:32:21)
zmienne: $pocz i $koniec => to daty pobierane z formularza Nie całkiem o to mi chodziło... Chodzi o to, że dostaje przedział wieku jako jakies dwa int'y, data urodzenia jest jako timestamp i nie bardzo umiem sobie poradzić z zapytaniem, które zwróci mi ludzi o wieku z określonego przedziału. Jak najlepiej napisać taki warunek? Kombinowałem tak:
Zdaje sobie sprawe z tego, że tak nie bedzie to raczej działać, ale myśle ze lepiej ilustruje to mój problem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) . Jestem przekonany, że znacie jakieś optymalne rozwiązanie. pozdrawiam Lechu Ten post edytował Lechu 12.03.2005, 23:23:51 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 91 Pomógł: 0 Dołączył: 14.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
a, to jak masz timestamp to masz wszystko, zmien sobie format daty na poziomie sqla i masz to co trzeba bo rozumiem ze te dwa inty o ktorych mowisz to jest ilosc lat? date w sqlu mozesz sobie przekonwertowac jak chcesz za pomoca DATE_FORMAT(). jezeli wszystko dobrze zrozumialem to byloby to cos w ten sposob:
, gdzie: $pocz = $rok_dzis - $lata_limit_dolny, $pocz = $rok_dzis - $lata_limit_gorny. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 12.06.2002 Skąd: opole/wrocław Ostrzeżenie: (0%) ![]() ![]() |
Mam jeszcze jedno pytanie, teraz z czystej ciekawości.
Czasem przechowywanie daty w polu timestamp może być kłopotliwe (np nieporządane może być automatyczne uaktualnianie się wartości). W takich sytuacjach korzystam czasem z pola int(14). Czy jest jakaś funkcja analogiczna do DATE_FORMAT(), którą możnaby wykorzystać w takim przypadku? pozdrawiam Lechu |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 91 Pomógł: 0 Dołączył: 14.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
mozesz skorzystac z pola typu DATETIME( ).
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 11:17 |