Oh, I see why. For the condition name='Mark' to be true, there must be a record in the Attendance table. As such, Attendance.event cannot be NULL, so the combined condition is always false.
Now, a person can attend many events, and an event has many participants. As such, there is a many-many relationship between Attendance and Event. You should introduce a third table:
Attendance:
attendance_id
name
date
Event:
event_id
AttendanceEvent:
id
attendance_id
event_id
Now, to select the events that a person has not attended, you would write something along the lines of:
SELECT Attendance.name, Event.event_id FROM Attendance, Event, AttendanceEvent
WHERE Attendance.attendance_id=AttendanceEvent.attendance_id
AND Event.event_id=AttendanceEvent.event_id
AND Attendance.name='Mark'
AND Attendance.date > (CURDATE() - INTERVAL 2 MONTH)
ORDER BY Attendance.date
I have taken the liberty of changing Event.date to Attendance.date, though if all participants must attend the event on the same date then it should be Event.date (and your schema should be modified accordingly). Sorry if my SQL is incorrect, I am rather rusty.