Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odejmowanie dat i tworzenie komorki wiek
Forum PHP.pl > Forum > Bazy danych > MySQL
art
Witam!

Mam tabele w której miedzy innymi znajduje się pole "data_urodzenia" chcialbym aby w zapytaniu stworzylo mi się nowe pole (obliczeniowe) wiek ... czyli poprostu chce obliczyc wiek danej osoby na podstawie posiadnej daty urodzenia... zasade znam mniej wiecej tworzeni w zapytaniu pol obliczeniowego jednak nie moge nigdzie znalesc funkcji ktora odejmuje daty sad.gif .. prosze o pomoc i jkis przyklad (oczywiscie zapytanieto potzrebne mi jets do skryptu php)
behemot
Może tutaj znajdziesz odpowiedz:

http://dev.mysql.com/doc/mysql/en/date-calculations.html
art
OK Dzieki znalazlem tm to czego potrzebowalem... ale pojawil sie w związku z tym kolejny problem....

To moje zapytanie
  1. SELECT konta.plec,konta.data_urodzenia,fotki.*,
  2. (YEAR(CURDATE())-YEAR(konta.data_urodzenia)) - (RIGHT(CURDATE(),5)<RIGHT(konta.data_urodzenia,5)) AS wiek
  3. FROM fotki INNER JOIN konta ON fotki.idusr=konta.id
  4. WHERE fotki.pub='y' AND wiek=17 LIMIT 30


zapytanie ldnie oblicza mi ten wiek i tworzy kolumne wiek ale po doaniu w WHERE warunku wiek=17 wylatuje taki błąd: Unknown column 'wiek' in 'where clause'
czyzbym w jakis zly sposob owolywal sie do stworzonej kolumny wiek? czy do tych klumn obliczeniowych tzreba sie jkos specjlnie odwolywac? moze gdzie indziej jest w moim zapytaniu jakis blad?
Vertical
Musisz określić nazwę tabeli
  1. ...WHERE fotki.pub='y' AND [tabela].wiek=17 LIMIT 30
art
No wlasnie mam z tym okresleniem nazyw spory problem bo jak widac w zapytaniu tam sklejane sa 2 tabele i dotkowo jescze dochdzi to pole wyliczeniowe wiek... i wpisywalem nazwe jednej tabeli i drugiej ale dalej nie dziala sad.gif
behemot
Z tego co mi wiadomo, w klauzuli where nie mozna uzywac aliasow do kolum.

A sprobuj tak:

  1. SELECT konta.plec,konta.data_urodzenia,fotki.*,
  2. (YEAR(CURDATE())-YEAR(konta.data_urodzenia)) - (RIGHT(CURDATE(),5)<RIGHT(konta.data_urodzenia,5)) AS wiek
  3. FROM fotki INNER JOIN konta ON fotki.idusr=konta.id
  4. WHERE fotki.pub='y' HAVING wiek=17 LIMIT 30


Glowy nie dam bo nie sprawdzalem ale na podbnym zapytaniu dzialalo.
Mozesz zamiast wiek wstawic wzór go oblicajacy.
beel
Hmmm a ja to czytałem ale nie moge dojść jak ma być, mam tak:

Który ze zmarłych prezydentów żył najdłużej?

tabela president i pola birth oraz death jak odjac w ten sposob: death-birth, data jest w postaci 1986-02-25
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.