This has to be one of the most requested items I've seen.
Since this is a scripting situation, you should've been able to find something in the Scripts & Pop-ups forum. Please note that the default time period for searches is within the past week, so to get decent results, you would've had to expand that (I usually suggest changing week to year).
In any case, here's the code that I use. The code goes into your Remotes section (Alt+R)
on !*:join:#:{
.hinc -m Joins $+($chan,.,$address)
describe # Welcomes4 $nick to12 $chan for the $ord($hget(Joins,$+($chan,.,$address))) time
}
on *:exit:{
.hsave Joins Joins.hsh
}
on *:disconnect:{
.hsave Joins Joins.hsh
}
on *:start:{
if !$hget(Joins) { .hmake Joins 10 }
if $exists(Joins.hsh) { .hload Joins Joins.hsh }
}