Since I couldn't find any information about the timestamps for the official playback statistics component, I worked through them myself.
General information:
180000000000 is 1601-01-01 00:00:00 any lower number gives invalid timestamp errors [Edit: as noted below this number is probably related to timezone, all numbers should then be adjusted by the number of hours from GMT, in this case GMT - 5 hours]
The last seven digits are probably some fraction of a second
180010000000 is 1601-01-01 00:00:01
180600000000 is 1601-01-01 00:01:00
216000000000 is 1601-01-01 01:00:00
126230400000000000 is 400 years, approximately (400*365.25*24*60*60)
126227988000000000 is 2001-01-01 00:00:00
126543348000000000 is 2002-01-01 00:00:00
126858708000000000 is 2003-01-01 00:00:00
127174068000000000 is 2004-01-01 00:00:00
127490292000000000 is 2005-01-01 00:00:00
127805652000000000 is 2006-01-01 00:00:00
10000000 is one second
600000000 is one minute
36000000000 is one hour
864000000000 is one day
315576000000000 is one year on average
315360000000000 is one year, non-leap year
316224000000000 is one year, leap year
Here are some scripts for converting old format data to the new format (assuming you are using tags and not the database). They all will only work for dates/times after 2001-01-01 00:00:00 as I didn't need to overcomplicate them to work for me (this way I only had to account for one leap year).
To convert FIRST_PLAYED to FIRST_PLAYED_TIMESTAMP (format: 200Y-MM-DD HH:MM:SS):
$add($select($substr(%first_played%,4,4),
126227988000000000,126543348000000000,126858708000000000,127174068000000000,127490292000000000,
127805652000000000),$mul($select($substr(%first_played%,6,7),0,31,$ifequal($substr(%first_played%,4,4),4,60,59),
$ifequal($substr(%first_played%,4,4),4,91,90),$ifequal($substr(%first_played%,4,4),4,121,120),
$ifequal($substr(%first_played%,4,4),4,152,151),$ifequal($substr(%first_played%,4,4),4,182,181),
$ifequal($substr(%first_played%,4,4),4,213,212),$ifequal($substr(%first_played%,4,4),4,244,243),
$ifequal($substr(%first_played%,4,4),4,274,273),$ifequal($substr(%first_played%,4,4),4,305,304),
$ifequal($substr(%first_played%,4,4),4,335,334)),864000000000),$mul($sub($substr(%first_played%,9,10),1), 864000000000),$mul($substr(%first_played%,12,13),36000000000),$mul($substr(%first_played%,15,16),
600000000),$mul($substr(%first_played%,18,19),10000000))
To convert LAST_PLAYED to LAST_PLAYED_TIMESTAMP (format: 200Y-MM-DD HH:MM:SS):
$add($select($substr(%last_played%,4,4),
126227988000000000,126543348000000000,126858708000000000,127174068000000000,127490292000000000,
127805652000000000),$mul($select($substr(%last_played%,6,7),0,31,$ifequal($substr(%last_played%,4,4),4,60,59),
$ifequal($substr(%last_played%,4,4),4,91,90),$ifequal($substr(%last_played%,4,4),4,121,120),
$ifequal($substr(%last_played%,4,4),4,152,151),$ifequal($substr(%last_played%,4,4),4,182,181),
$ifequal($substr(%last_played%,4,4),4,213,212),$ifequal($substr(%last_played%,4,4),4,244,243),
$ifequal($substr(%last_played%,4,4),4,274,273),$ifequal($substr(%last_played%,4,4),4,305,304),
$ifequal($substr(%last_played%,4,4),4,335,334)),864000000000),$mul($sub($substr(%last_played%,9,10),1),
864000000000),$mul($substr(%last_played%,12,13),36000000000),$mul($substr(%last_played%,15,16),600000000),
$mul($substr(%last_played%,18,19),10000000))
To convert PLAY_DATE and PLAY_TIME to a timestamp (date format: DDMMYY; time format: HHMMSS)
$add($select($substr(%play_date%,6,6), 126227988000000000,126543348000000000,126858708000000000,127174068000000000,127490292000000000,
127805652000000000),$mul($select($substr(%play_date%,3,4),0,31,$ifequal($substr(%play_date%,6,6),4,60,59),
$ifequal($substr(%play_date%,6,6),4,91,90),$ifequal($substr(%play_date%,6,6),4,121,120),
$ifequal($substr(%play_date%,6,6),4,152,151),$ifequal($substr(%play_date%,6,6),4,182,181),
$ifequal($substr(%play_date%,6,6),4,213,212),$ifequal($substr(%play_date%,6,6),4,244,243),
$ifequal($substr(%play_date%,6,6),4,274,273),$ifequal($substr(%play_date%,6,6),4,305,304),
$ifequal($substr(%play_date%,6,6),4,335,334)),864000000000),$mul($sub($left(%play_date%,2),1), 864000000000),$mul($left(%play_time%,2),36000000000),$mul($substr(%play_time%,3,4),600000000),
$mul($substr(%play_time%,5,6),10000000))
These scripts will all blindly overwrite any existing data in the target tags. I have not thoroughly tested them, especially for any date before 2005-01-01 as none of my existing tags had data for any earlier dates. I had some errors in my accounting of days in early versions of these scripts, but I think that I've found and fixed them all. If you notice that any particular months convert incorrectly (probably one or two days off from expected), let me know.
Edit: Yeah, the 180000000000 is related to time zone, I didn't really bother to think about that (I did determine it was 5 hours, but I didn't really care because my script works for me). Plus if anyone wants to use these scripts, they'll have to remove all of the line breaks I added. All of the statistics that I cared about were stored with the files as I have a tendency to lose my configs (like having the unofficial statistics plugin bringing down my computer and corrupting my foobar config).