[ inherited @ 09.01.2007. 16:01 ] @
Hteo bih upitom izracunati koliko lice ima godina, od unetog datuma rodjenja do danasnjeg sistemskog datuma.
Imam, IME, PREZIME, DATUM_RODJENJA, sad bih hteo query koji ce mi dati jos jednu kolonu sa brojem godina?
[ mb_sa @ 09.01.2007. 18:25 ] @
U MySQL-u imas funkciju datediff(trnueni datum,datum_rodjenja) koja ce ti vratiti razliku u danima izmedju ova dva datuma. Taj broj podijelis sa 365 i dobijenu vrijnednost 'tretiras' sa dodatnom funkcjom koja ce ti odbaciti sve iza zareza, kako bi dobio cijeli broj.

Ovo je rjesenja na nivo MySQL-a, al ideja je vjerovano ista za sve baze!

Rjesnje koje sam naveo nije savrseno, zbog prestupnih godina!
[ inherited @ 09.01.2007. 19:12 ] @
A sta ako je prestupna godina, a bilo ih je od datuma rodjenja?
Inace, u pitanju je Access. Jel ima neka standardna fukcija koja bi odgovarala za vise SUBP? Neka?Funkcija(Datum_Rodjenja, Danasnji_Datum)?
[ mb_sa @ 09.01.2007. 19:24 ] @
Citat:
inherited: A sta ako je prestupna godina, a bilo ih je od datuma rodjenja?
Inace, u pitanju je Access. Jel ima neka standardna fukcija koja bi odgovarala za vise SUBP? Neka?Funkcija(Datum_Rodjenja, Danasnji_Datum)?


Recimo da se upit izvrsi na nečiji rodjendan, vrijednost u godinama moze biti pogresna za 1!

Sumnjam da ima neko standardno rjesenje! Pogledaj u Helpu od Accesa rad sa datumima, mozda ima nesto na ovu temu! Ne korstim Access, tako da ne mogu konkretno pomoci!

Pozdrav.

EDIT: Izgleda da i Access ima datediff() funkciju, koje je porplicno zgodno rjesena!

LINK: http://www.techonthenet.com/access/functions/date/datediff.php
[ Miloš Baić @ 09.01.2007. 20:55 ] @
Pozdrav,

mene interesuje to isto, ali za PostgreSQL?
[ Zidar @ 09.01.2007. 21:51 ] @
Neka imas dva datuma, ZadatiDatum i DatumRodjanja. Ako oduzmes godinu zadatog datuma od godine rodjenja dobices neki broj. Na primer, zadati datum je 25 Feb 1982 a datum rodjenja je 12 Mar 1960. Razlika u godinama je 22. Osoba ce imati pune 22 godine na dan 12 Mar 1982. Posto je zadati datum PRE rodjendana, osoba jos nije napunila 22 godine pa stoga ima 21 godinu (jednu manje od izracunate). Ako je zadati datum jednak rodjendanu ili veci, osoba ima 22 godine (razliku u godinama izmedju dva datuma). U Accessu mozete da kosristite IIF funkciju da obavi poredjenje datuma, a u u SQL bazama trebalo bi da CASE (DECODE u Oracle?) zavrsi posao.

Ili na Google trazis 'calculate person's AGE' i dobijes gomilu resenja :-)
[ mb_sa @ 09.01.2007. 22:46 ] @
Citat:
loshmiscg: Pozdrav,

mene interesuje to isto, ali za PostgreSQL?


PostgreSQL, koliko znam, nema funkcije tipa datediff(), adddate(), ali to se rjesava sa operatorima - i +!

A za ostalo, korstiti ideju koju je Zidar naveo!

Pozdrav.
[ Miloš Baić @ 09.01.2007. 22:49 ] @
@Zidar
Hvala, pomogao si mi, uploadovao sam slike pa možete pogledati. Napomena, za PostgreSQl, primer.
Dakle, age funkcija je odradila sliku br1, a date_part funkcija sliku br 2, prikazuje napunjenje godine.
Code:
CREATE VIEW najstariji AS 
 SELECT br_dosije, ime, prezime, dat_rodj, age(dat_rodj) AS age
 FROM kadrovi
 WHERE aktivnost = 'AKTIVAN'
 ORDER BY dat_rodj;
-- iz pogleda najstariji, nastaje novi pogled
CREATE  VIEW najstariji_date_part AS 
 SELECT br_dosije, ime, prezime, dat_rodj, date_part('year', age) AS broj_godina
 FROM najstariji;

Kao što vidite, odradio sam to iz dva pogleda, ovako na brzinu, ali verovatno se to može uraditi kroz jedan, kvalitetnije.