Ответ 1
integer будет хорошим, но недостаточно хорошим, потому что postgresql не поддерживает unsigned типы
Тип поля PostgreSQL для отметки времени unix:
Проходили Типы даты и времени postgreSQL V 9.1.
int(10)
)integer будет хорошим, но недостаточно хорошим, потому что postgresql не поддерживает unsigned типы
Временная метка unix epoch прямо сейчас (2014-04-09) - 1397071518. Поэтому нам нужен тип данных, способный хранить число, по крайней мере, такое большое.
Какие типы данных доступны?
Если вы ссылаетесь на документацию PostgreSQL на числовые типы, вы найдете следующие варианты:
Name Size Minimum Maximum
smallint 2 bytes -32768 +32767
integer 4 bytes -2147483648 +2147483647
bigint 8 bytes -9223372036854775808 +9223372036854775807
Что это означает в отношении представления времени?
Теперь мы можем взять эти числа и преобразовать их в даты с помощью epoch converter:
Name Size Minimum Date Maximum Date
smallint 2 bytes 1969-12-31 1970-01-01
integer 4 bytes 1901-12-13 2038-01-18
bigint 8 bytes -292275055-05-16 292278994-08-17
Обратите внимание, что в последнем случае использование секунд ставит вас так далеко в прошлое и будущее, что это, вероятно, не имеет значения. Результат, который я дал, - это если вы представляете эпоху unix в миллисекундах.
Итак, что мы узнали?
smallint
явно плохой выбор.integer
- достойный выбор на данный момент, но ваше программное обеспечение взорвется в 2038 году. Апокалипсис Y2K не имеет ничего в проблеме 2038 года.bigint
- лучший выбор. Это надежное будущее для большинства мыслимых человеческих потребностей, хотя Доктор может по-прежнему критиковать его.Вы можете или не можете подумать, не лучше ли хранить временную метку в другом формате, таком как стандарт ISO 8601.
Я бы просто использовал TIMESTAMP WITH (OUT) TIME ZONE и использовал EXTRACT, чтобы получить представление временной метки UNIX, когда вам это нужно.
Сравнить
SELECT NOW();
с
SELECT EXTRACT(EPOCH FROM NOW());
Я не понимаю, почему у этого вопроса есть отрицательные голоса.
В любом случае, я нашел близкий вопрос на сайте Администраторы баз данных (со многими положительными голосами).
Это просто предложить посмотреть, потому что есть гораздо более полная информация об этой нетривиальной теме.