Что выбрать в PHP для хранения даты - datetime или timestamp
22.11.2009Сегодня, покопавшись в настройках php, выяснил, что генерируются предупреждения при использовании старых функций date для форматирования даты в формате unix timestamp. В блоголёте для хранения даты я как раз использовал timestamp, то бишь целое число. Меня практически полностью устраивает timestamp, если бы не одно абстрактное обстоятельство - эпоха ЮНИКС заканчивается в 2038 году. К тому времени, вероятно везде будет как минимум 64 разрядные платформы и не возникнет проблем.
С другой стороны сам php стал генерировать предупреждения, недвусмысленно намекая на класс datetime. Покурил я доку про этот класс. Не впечатлен. Например мне удобно использовать timestamp для функции strftime, которая не имеет аналога для datetime, если я не ошибаюсь. Также для datetime недоступны простые арифметические операции сравнения - больше и меньше. Это второй существенный минус.
А собственно вопрос - а почему не используется тип float для хранения даты. Как например в дельфи, где целая часть - это дата (в смысле дни), а дробная - время (часы, минуты и т.д.). Тогда не было этих дурацких ограничений. не думаю, что так уж сложно было бы расширить имеющиеся функции форматирования для работы с таким форматом, но при этом остались бы в силе все арифметические операции с датой.
Самому писать, считаю даже преступлением, так как это только лишний головняк, и не принесет никаких очевидных бонусов.
Комментарии (7) на запись “Что выбрать в PHP для хранения даты - datetime или timestamp”
Оставить комментарий
Только в БД хранить timestamp в виде longint или int.
timestamp имеет ограничение до 2038 года, а в бд удобно пользоваться функциями даты, например конструкция вида
where month(posted) = 1
с таймстампом это будет сложнее