I'm interested in this for InnoDB mostly, but also for MyISAM.
I looked around in information_schema and did not see this data anywhere.
I'm using MySQL 5.5.16.
There is no immediate control data to tell you that, but there are a few mechanisms you can setup.
If you have binary logging enabled, simply do a grep -i "analyze table" against all the binary logs using the output from mysqlbinlog.
If you have the general log enabled, simply do a grep -i "analyze table" against the general log file and locate the timestamp just about the command.
You should schedule a cronjob that runs ANALYZE TABLE against all tables that have high-write, high-update, high-delete volume. That way, there is no guess work.
Try setting innodb_stats_on_metadata to have a measure of predictability as to when an InnoDB table needs ANALYZE TABLE. (See my Mar 26, 2012 post : When are InnoDB table index statistics updated? )
In the past, I have often stated that running ANALYZE TABLE table against InnoDB is useless.
Jun 21, 2011 : From where does the MySQL Query Optimizer read index statistics?Aug 04, 2011 : Optimizing InnoDB default settingsOct 16, 2011 : Suddenly have to rebuild indexes to prevent site from going downHopefully, MECHANISM #4 is probably what you need.
innodb_stats_on_metadata in order to improve the performance of information_schema. information_schema.STATISTICS could possibly be more stabilized by ` innodb_stats_on_metadata`. innodb_stats_on_metadata. I'll accept your answer now as it's clear that there is no easy way to get this data form MySQL. In case of InnoDB there are two tables that store persistent statistics details, including the timestamp of the last update (in the column last_update).
mysql.innodb_table_statsmysql.innodb_index_statsThis is described in the section "InnoDB Persistent Statistics Tables" in the documentation.