Сделал базу test
CREATE TABLE `test` (
`name` varchar(255) NOT NULL,
`date_int` int(11) UNSIGNED NOT NULL,
`date_time` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `test`
ADD KEY `date_int` (`date_int`),
ADD KEY `date_time` (`date_time`);
COMMIT;
заполнил значениями дат, от 1970-01-01 00:00:01 до 1970-01-05 11:02:29, с разницей 1 секунда, итого вышло 1 603 869 строк (далее php умер и мне лень было настраивать Maximum execution time).
Разницы вообще нет, если искать точное соответствие вплоть до секунды:
SELECT * FROM `test` WHERE date_int = UNIX_TIMESTAMP('1970-01-03 12:12:12')
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE test ref date_int date_int 4 const 2 NULL
EXPLAIN SELECT * FROM `test` WHERE date_time = '1970-01-03 12:12:12'
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE test ref date_time date_time 5 const 2 NULL
Так что фанатик прав, нехрен для даты использовать числа.