Avatar billede stringbuffer Nybegynder
05. juni 2001 - 10:44 Der er 3 kommentarer og
1 løsning

Alder udfra dato

Lige nu gør jeg sådan:
SELECT FLOOR((TO_DAYS(CURDATE())-TO_DAYS(BIRTH))/365) AS AGE FROM USERS
(BIRTH er en kolonne i tabellen, den indeholder fødselsdato)
Kan det gøres mere effektivt? Er der måske en smartere funktion til at sammenligne datoer og få antal år imellem dem?
Avatar billede henrik_ffc Nybegynder
05. juni 2001 - 11:43 #1
Din logik er lidt ukorrekt, da den ikke tager højde for skudår osv.
Da jeg antager du kun skal bruge alderen i hele år, så prøv istedet:

select ((year(curdate())-year(birth))-1 + (dayofyear(curdate()>dayofyear(birth))) as AGE from USERS;

Denne linie tager også højde for skudår
Avatar billede henrik_ffc Nybegynder
05. juni 2001 - 11:45 #2
Det var et svar.
Der sker følgende:

Træk årstallene fra hinanden (2001 - 1970 = 31)
Træk een fra (for dette år)  (31 - 1 = 30)
Hvis man har haft fødselsdag i år lægges een til (30 + 1 = 31)

Vupti - jeg er 31...
Avatar billede henrik_ffc Nybegynder
05. juni 2001 - 12:04 #3
Der var et par småfejl bl.a. med en manglende parantes.

select ((year(curdate())-year(birth))-1 + (dayofyear(curdate())>=dayofyear(birth))) as AGE from USERS;

..er mere korrekt
Avatar billede stringbuffer Nybegynder
05. juni 2001 - 12:55 #4
Jeps, du har ret.
Jeg lavede den dog om til
(YEAR(CURDATE())-YEAR(BIRTH)-(DAYOFYEAR(CURDATE())<DAYOFYEAR(BIRTH))) AS AGE

for at der ikke skal trækkes mere fra end nødvendigt
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester