SELECT * FROM table_name WHERE date BEETWEN '2016-04-01' AND '2016-04-15'
или по таймштаму
SELECT * FROM table_name WHERE date_utc BEETWEN UNIX_TIMESTAMP('2016-04-01') AND UNIX_TIMESTAMP('2016-04-15')
Использовать в качестве primary key строковые стобцы не очень хорошая практика. Для поиска по строковым столбцам лучше использовать обычный индекс.
Что касается типов:
- в таблицах где не требуется поиск данных по текстовым полям лучше использовать varchar, т.к тип char всегда имеет фиксированный размер, и как правило весит больше.
- в таблицах где требуется поиск по текстовым данным - использовать char, т.к. MySQL будет работать по упрощенной схеме с таблицей
Может произойти все что угодно. Как правило такие ситуации решаются с использованием транзакций. Но для их использования стоит перейти с MyISAM на InnoDB
Более подробнее о них можно почитать Тут
Конкретно в Вашем случае стоит перейти