webForumDet fria alternativet

Datediff + ålder

5 svar · 328 visningar · startad av lillen_009

lillen_009Medlem sedan nov. 2002137 inlägg
#1

har ett litet problem. Vill räkna ut ålder efter ett datum som finns i databasen (MySQL, DATE), alltså i formatet 1983-07-17. Nu vill jag få fram hur gammal den är (mig själv i detta fall). Så här har jag gjort, men då får jag resultatet 20 och jag fyllder det först nästa vecka.

datum = RS("age")
alder = datediff("yyyy",datum, now())
response.write alder

Någon som har förslag på hur man kan göra för att den inte ska avrunda uppåt till 20 utan skriva det lägre talet ända tills det slagit om till det högre. Har provat med -1 efter och då blir det rätt för mig, men fel för många som fyllt år det föregåede halvåret

:birp trevlig lördagkväll :)

PeeerMedlem sedan mars 20025 907 inlägg
#2

Räkna antalet dagar och omvandla till år i efterhand istället
http://www.webforum.nu/showthread.php?s=&postid=86098#post86098

lillen_009Medlem sedan nov. 2002137 inlägg
#3

Fungerar sådär

Provade och fick det att fungera ganska bra - med ett undantag.

2001-07-05 resulterade i 1 år - vilket egentligen borde vara två. Varför? Finns problemet på många ställen?

edit:
verkar vara decimaler som spökar. Använder /365.2375
Får rätt på 1983-07-05 (20 år), men fel på 2001-07-05 (1 år)

VARFÖR???

PeeerMedlem sedan mars 20025 907 inlägg
#4

Problemet förekommer nog bara när månad och dag på datum är samma som dagens månad och dag. Gjorde en liten workaround som verkar funka. Möjligt att det är någon bugg någonstans.

datumet = "1985-12-25"
age = Fix(DateDiff("d",datumet, Date)/365.2375)
if datepart("m",date()) = datepart("m",datumet) and datepart("d",date()) = datepart("d",datumet) and not 

datepart("yyyy",datumet) = datepart("yyyy",date()) Then age = age +1
Response.write age
lillen_009Medlem sedan nov. 2002137 inlägg
#5

Tack Peeer, men jag får detta fel när jag provar din kod

Kompileringsfel i Microsoft VBScript (0x800A03EA)
Syntaxfel
/forum/detail.asp, line 61, column 104
if datepart("m",date()) = datepart("m",datumet) and datepart("d",date()) = datepart("d",datumet) and not

felet pekar på and not

PeeerMedlem sedan mars 20025 907 inlägg
#6

Attans... missade ju halva kodraden :D

datumet = "1985-12-25"
age = Fix(DateDiff("d",datumet, Date)/365.2375)
if datepart("m",date()) = datepart("m",datumet) and datepart("d",date()) = datepart("d",datumet) and not datepart("yyyy",datumet) = datepart("yyyy",date()) Then age = age +1
Response.write age
134 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)