В каждой базе данных есть функции для преобразования Unix-метки времени в дату и обратно.
- MySQL — метка времени→дата
FROM_UNIXTIME(ts), дата→метка времениUNIX_TIMESTAMP(dt) - PostgreSQL —
to_timestamp(ts),extract(epoch from dt) - SQLite —
datetime(ts, 'unixepoch') - MongoDB —
new Date(ts * 1000)(драйверы используют миллисекунды)
Как выбрать способ хранения: целочисленный epoch не зависит от часового пояса и его просто сортировать и вычислять, что подходит для логов и событий. Тип TIMESTAMP или DATETIME, напротив, понятен человеку и позволяет напрямую использовать функции работы с датами. Большинство команд хранят целое число в UTC и преобразуют его в местное время только при отображении.