Подтвердить что ты не робот

Тип поля для временной метки unix

Каков наилучший тип поля для временных меток unix?

Будет ли int(10) достаточно на некоторое время?

4b9b3361

Ответ 1

Unix time_t - либо 32 бит, либо 64. Таким образом, int(8) или binary(8) достаточно, по крайней мере для следующие 293 миллиарда лет.

Ответ 2

Число в типе данных MySQL INT(n) не определяет, сколько зарезервировано место для хранения, это только ширина отображения только для форматирования. Поскольку такой INT(10) совпадает с простым INTEGER, то есть 32-разрядным подписанным числом.

Таким образом, это, безусловно, подходящий тип данных для 32-разрядной метки времени Unix. Но если вам нужны 64-битные временные метки, этого не будет достаточно; вам нужно будет использовать BIGINT.

Ответ 3

Для временных меток вы должны использовать тип поля TIMESTAMP или DATETIME.

Ответ 4

Для отметки времени Unix вы можете легко использовать INT(4) UNSIGNED, максимальное значение которого 4294967295. Это достаточно далеко, чтобы вы могли хранить значения time() для следующих ~ 133 лет. Если ваше приложение перестанет работать из-за этого, вы будете долго мертвы;)

Вы также можете использовать тип данных TIMESTAMP, что менее проблематично, и когда вы хотите преобразовать его в отметку времени Unix, вы можете использовать функцию UNIX_TIMESTAMP().

ех.

SELECT UNIX_TIMESTAMP(col_timestamp) FROM tbl_name;