I'm still 29, and this shows correctly on StackOverflow and the rest of the "trilogy" because I entered my correct birth date. The data dump says I'm 30. I know this is happening to other users as well — you can see it here:
http://meta.stackoverflow.com/questions/41514/stackql-test-site-updated-to-march-data/41517#41517 http://jcoehoorn.dyndns.org/stackql/default.aspx?qid=470

share|improve this question
Yep, also shows me @ 37 which doesn't happen for another 29 days (get your shopping in quick). –  squillman Mar 8 '10 at 16:13
Whom are you going to be believe? The cold, raw data or some guy named Joel? –  XMLbog Mar 8 '10 at 16:13
What's odd about this is that they already have good code to do it for the profile pages. I thought that this might have been a performance consideration, if the full calculation was taking too long for the export, but I find that doubtful as the users table is one of the smallest. –  Joel Coehoorn Mar 8 '10 at 16:20
Yeah, like we haven't heard this one before! Still 29, eh? Sure... –  user27414 Mar 8 '10 at 16:22
Has anyone done the query on themselves and found that the age in the data is correct? Mine is wrong as well. –  Jon Seigel Mar 8 '10 at 16:32
@Jon Seigel - I suspect it's correct for those that have had their birthday this year. I'm guessing the export is done all in sql with a "FOR XML" query or similar, where an accurate age calculation would be cumbersome but a simple Year(getdate()) - Year([Users].[dob]) is easy. The fact that it's been nearly a year before anyone noticed shows that this might even be the right approach. –  Joel Coehoorn Mar 8 '10 at 16:40
@Jon: wrong here too. I'm two more months away from the age integer to be incremented, yet it seems the SO dump can't wait. –  perbert Mar 8 '10 at 16:42
@Jon - my age is wrong (says 25, pretty sure I'm 24), my birthday's in August. –  Dominic Rodger Mar 8 '10 at 16:44
Still 29? That's what she said... –  AnonJr Mar 8 '10 at 17:06
My b-day is in November, and it says I'm a year older than i actually am. –  jjnguy Mar 8 '10 at 17:12
Does anyone have a correct birthday in the data dump? –  jjnguy Mar 8 '10 at 17:19
@Justin: I do. @voyager confirmed it in a comment below. –  gnostradamus Mar 8 '10 at 20:50
@richardj.ross Opening a new question would likely make more sense than resurrecting this one. I think we know about this and are planning to fix it either way, though. –  Anna Lear Apr 30 '13 at 21:44
@AnnaLear good to know, but opening another question just for it to get closed as a dupe probably wouldn't have helped too much either. We'll see what happens. –  Richard J. Ross III Apr 30 '13 at 21:50
@RichardJ.RossIII If it gets closed, let me know and I'll reopen. I'm also going to refund your bounty here. –  Anna Lear Apr 30 '13 at 21:54
add comment

4 Answers

up vote 4 down vote accepted

This will be fixed in the next dump.

share|improve this answer
Out of curiosity, what was the issue? –  jjnguy Mar 8 '10 at 22:00
This is broken again, e.g. select age from users where id = 2 on MSO shows you as 35. –  Rup Mar 16 '12 at 13:53
Yup, can confirm is broken. Adding bounty... –  Richard J. Ross III Apr 29 '13 at 14:42
add comment

Maybe Jeff should post a question on StackOverflow asking how to calculate someone's age from their birthday and the current date...

Oh look, he did ask that in 2008.

Perhaps he now believes his current knowledge will be entirely obsolete in one year, not five, so he deliberately wipes his memory every 12 months to make room.

share|improve this answer
There are some good answers there - particularly this one - stackoverflow.com/questions/9/… - an obvious solution when it's shown, but not one I'd have come up with in a million years. –  ChrisF Mar 8 '10 at 21:43
As homage to Jon Skeet, someone should post an answer that uses Noda Time code.google.com/p/noda-time –  MarkJ Mar 9 '10 at 17:57
add comment

Here are the results of twenty randomly chosen users:

User 218540: 28 years in data dump, 27 years on website
User 160208: 25 years in data dump, 24 years on website
User 23897: 40 years in data dump, 39 years on website
User 86038: 23 years in data dump, 22 years on website
User 20367: 39 years in data dump, 38 years on website
User 106040: 31 years in data dump, 31 years on website
User 2368: 27 years in data dump, 27 years on website
User 116553: 23 years in data dump, 22 years on website
User 191385: 15 years in data dump, 14 years on website
User 214528: 24 years in data dump, 23 years on website
User 18102: 35 years in data dump, 35 years on website
User 58309: 42 years in data dump, 42 years on website
User 110227: 32 years in data dump, 32 years on website
User 98585: 26 years in data dump, 25 years on website
User 184340: 39 years in data dump, 38 years on website
User 250022: 24 years in data dump, 23 years on website
User 8843: 39 years in data dump, 39 years on website
User 234438: 33 years in data dump, 32 years on website
User 5975: 27 years in data dump, 26 years on website
User 251474: 34 years in data dump, 33 years on website

14 out of 20 differ, and where they do, the age on the website is exactly one less than the age in the db.

Code used:

import sqlite3, random, httplib2, re

# the <center> cannot hold it is too late
age_re = re.compile(r"<td>age</td>\s*<td>\s*(\d*)\s*</td>")
http = httplib2.Http()
db = sqlite3.connect("so201003.db")

with_age = db.execute("SELECT Id, Age FROM USERS WHERE Age IS NOT NULL").fetchall()

sample = with_age[:20]

for userid, db_age in sample:
    url = "http://stackoverflow.com/users/%d" % userid
    response, content = http.request(url, headers = {"User-Agent": "Hi Jeff! Joel says you're wrong. I'm checking that."})
    if response.status != 200:
        raise IOError("Response was %d" % response.status)
    web_age = int(age_re.search(content).groups(1)[0])
    print "User %d: %d years in data dump, %d years on website" % (userid, db_age, web_age)
share|improve this answer
Could it be that those 6 that have a correct age have their birthdays in the first two months? –  perbert Mar 8 '10 at 18:34
@voyager: Possibly. Or actually: Likely. That would concur with Pollyanna's assumption. –  balpha Mar 8 '10 at 18:37
My birthday has already come and gone this year, so I'm guessing my ages will both be correct assuming Pollyanna has the right idea. –  gnostradamus Mar 8 '10 at 20:28
@gnovice: so it is. –  perbert Mar 8 '10 at 20:30
add comment

I expect they are doing the simple year calculation. If you were born in 1970, and it's 2010, then sometime during this year you have already or will turn 40. It's easier/cheaper than a full date calculation, and does it really matter?

It could also be to avoid minor privacy concerns - look at previous data dumps and determine the birthmonth. Seems a bit over concerned, though, so it's unlikely, but possible. Notably one can determine the exact birthdate by reading the user page once a day and waiting for the age to change, so it's already visible, but takes up to a year to find out.

share|improve this answer
add comment

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .