我应该在MySQL中使用大整数还是常规整数来存储timerstamp?我计划将它存储在INT而不是内置的时间戳或日期时间中,以便我应该使用哪种INT类型?
答案 0 :(得分:14)
您应该将其存储在时间戳中,因为这很可能是DBMS针对时间戳数据进行优化的。
我很好奇为什么你会牺牲MySQL开发人员为使时间戳按照他们应该的方式工作而付出的所有努力,并用几乎肯定不会起作用的东西替换它。
由于你没有陈述为什么你想要使用一个整数,我只是假设它是暂时的疯狂,你很快就会恢复: - )
答案 1 :(得分:13)
Int将在2038年翻转为负数(如果您使用的是UNIX时间戳):http://en.wikipedia.org/wiki/2038_problem。
所以BIGINT可能是最安全的选择
答案 2 :(得分:9)
我认为这完全取决于你想做什么。时间/日期类型有一些合适的类型(参见:http://dev.mysql.com/doc/refman/5.0/en/date-and-time-type-overview.html)
DATE
- 通常为3个字节,范围:1000-01-01
到9999-12-31
。DATETIME
- 8个字节,范围1000-01-01 00:00:00
到9999-12-31 23:59:59
TIMESTAMP
- 4个字节范围1970-01-01 00:00:01
UTC到2038-01-19 03:14:07
UTC。
然后,有一些语义问题需要注意:(int是4个字节,如TIMESTAMP,bigint是8个字节,如DATETIME)