dir=older
SELECT /* ApiQueryRecentChanges::run */ rc_timestamp,rc_namespace,rc_title,rc_cur_id,rc_type,rc_moved_to_ns,rc_moved_to_title,rc_deleted,rc_comment,rc_user,rc_user_text,rc_old_len,rc_new_len,rc_logid,rc_log_type,rc_log_action,rc_params FROM mw_recentchanges FORCE INDEX (rc_timestamp) WHERE (rc_timestamp<='20110214043434') AND (rc_timestamp>='20110215043434') AND rc_deleted = '0' AND (rc_bot = 0) ORDER BY rc_timestamp DESC LIMIT 11
dir=newer
SELECT /* ApiQueryRecentChanges::run */ rc_timestamp,rc_namespace,rc_title,rc_cur_id,rc_type,rc_moved_to_ns,rc_moved_to_title,rc_deleted,rc_comment,rc_user,rc_user_text,rc_old_len,rc_new_len,rc_logid,rc_log_type,rc_log_action,rc_params FROM mw_recentchanges FORCE INDEX (rc_timestamp) WHERE (rc_timestamp>='20110214043434') AND (rc_timestamp<='20110225043434') AND rc_deleted = '0' AND (rc_bot = 0) ORDER BY rc_timestamp LIMIT 11
You can quite clearly see the older is trying to do less than a date, and then greater than a date in the future. No good!
Seems to be evident back to 1.16 at least (if not before). Tested locally and on enwiki
Version: unspecified
Severity: major