Я бы создал две дополнительные таблицы для хранения ваших дат:
date_type (date_type_id, date_label)
user_date (user_id, date_type_id, date_value)
Что может быть заполнено таким образом:
date_type (1, 'Sign in')
date_type (2, 'Sign out')
user_date (1, 1, '2010-08-11 02:14:20')
user_date (1, 1, '2010-08-11 02:36:54')
// etc
Затем вам нужно будет присоединиться, чтобы достичь желаемого:
SELECT *
FROM user
INNER JOIN user_date
USING (user_id)
INNER JOIN date_type
USING (date_type_id)
WHERE date_value BETWEEN a AND b;
AND date_type_id IN (1,2) -- if necessary, you can choose which
-- types to check