• for older versions, you'd probably have to look at sys.sysindexes and the STATS_DATE function to see out of date stats, maybe something like this:
    SELECT OBJECT_SCHEMA_NAME(i.OBJECT_ID) AS TableSchema, OBJECT_NAME(i.OBJECT_ID) AS TableName, o.type_desc AS ObjectType, i.[name] AS StatisticsName, STATS_DATE(i.OBJECT_ID, i.index_id) AS StatisticsUpdateDate, si.rowmodctr AS RecordsModified, si.rowcnt AS TotalRecords, i.has_filter
    FROM sys.indexes i
      INNER JOIN sys.objects o ON i.OBJECT_ID=o.OBJECT_ID
      INNER JOIN sys.sysindexes si ON i.OBJECT_ID=si.id AND i.index_id=si.indid
    WHERE o.TYPE <> 'S'
      AND STATS_DATE(i.OBJECT_ID, i.index_id) IS NOT NULL
      AND si.rowmodctr > 0
    UNION ALL
    SELECT OBJECT_SCHEMA_NAME(o.OBJECT_ID) AS TableSchema, OBJECT_NAME(o.OBJECT_ID) AS TableName, o.type_desc AS ObjectType, s.name AS StatisticsName, STATS_DATE(o.OBJECT_ID, s.stats_id) AS statisticsUpdateDate, si.rowmodctr AS RecordsModified, ir.rowcnt AS TotalRecords, s.has_filter
    FROM sys.stats s
      INNER JOIN sys.objects o ON s.OBJECT_ID=o.OBJECT_ID
      INNER JOIN sys.sysindexes si ON s.OBJECT_ID=si.id AND s.stats_id= si.indid
      INNER JOIN (SELECT id,rowcnt FROM sys.sysindexes WHERE indid IN (0,1)) IR ON IR.id=o.OBJECT_ID
    WHERE o.TYPE <> 'S'
      AND (s.auto_created=1 OR s.user_created=1)AND STATS_DATE(o.OBJECT_ID, s.stats_id) IS NOT NULL
      AND si.rowmodctr > 0
    ORDER BY RecordsModified DESC