timestamp или datetime, какая разница?

Олег

При работе со временем важно понимать разницу между datetime и timestamp.

datetime представляет из себя дату, как в календаре и время, которое мы видим на часах, в нашей временной зоне.

timestamp же представляет из себя время, точно определённое для всех, ведь в мире много временных зон.

Пример:

Как много прошло времени начиная с 2013-01-10 14:45:32? Зависит от того, в какой временной зоне вы находитесь. Если же спросить, сколько это 1492256793.49 секунд начиная с 1970-01-01 00:00:00 UTC — мы можем точно сказать, сконвертировав timestamp в обычное время с учётом нашей временной зоны.

Если вы пишете API, то, как правило, используют timestamp. Иначе вы обрекаете себя на кучу гемора с разбором формата данных и с конвертацией зон.

Если же хочется хранить время в базе данных, то у вас часто под рукой ORM. Он сделает всю работу за вас и в такой ситуации часто хранят дату как datetime. ORM сам запишет таймзону и посчитает разницу между таймзонами, если нужно посчитать какой-нибудь временной интервал, например. Но если ORM у вас нет, храните дату в timestamp.

Попробуйте бесплатные уроки по Python

Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.

Переходите на страницу учебных модулей «Девмана» и выбирайте тему.