Лично я всегда предпочитаю первый вариант.
То есть в базе храните в timestamp
когда нужны выборки, можете для сессии установить часовой пояс пользователя:
set @@session.time_zone = '+07:00';
select now();
Дальше выясняете временную зону клиента, можно или через геоайпи или через жаваскрипт
Ну или не выясняя, напрямую отдавать клиенту, а там уже черезжава скрипт выводить под текущий часовой пояс, но лично мне этот подход не нравится т.к. возникает геморрой при аякс запросах, а так при сохранении записей с точным временем клиента. Всё зависит от Ваших нужд.