我应该在MySQL中使用大型INT还是常规INT来存储时间戳?

Jas*_*vis 10 mysql integer biginteger

我应该在MySQL中使用大整数还是常规整数来存储timerstamp?我计划将它存储在INT而不是内置的时间戳或日期时间中,以便我应该使用哪种INT类型?

pax*_*blo 14

您应该将其存储在时间戳中,因为这很可能是DBMS将针对时间戳数据进行优化的内容.

我很好奇为什么你会牺牲MySQL开发人员为使时间戳按照他们应该的方式工作而付出的所有努力,并用几乎肯定不会起作用的东西取而代之.

既然你没有说明为什么要使用整数,我只是假设它是暂时的精神错乱,你很快就会恢复:-)

  • 通常使用它们是因为 php 和其他此类语言使使用时间戳比使用正确的 sql 日期格式更容易。 (2认同)

zmb*_*ush 13

Int将在2038年转为负数(如果您使用的是UNIX时间戳):http://en.wikipedia.org/wiki/2038_problem.

所以BIGINT可能是最安全的选择

  • 好。有聪明的人使用 bigint 处理数据(数据库是数据库而不是数据库 + 营销程序),因为数据库或任何数据库版本的日期时间格式的可移植性和问题。Int 是 Int。而 Oracle、SQL、MySQL、MariaDb 等没有问题。数据时间类型,谷歌搜索问题太多,有几个数据库更新,兼容性..Mucha veces no es cuestion de inteligencia, es cuestion de experiencia ;-) 很多时候这不是智力问题,而是经验问题;-) (3认同)
  • *耸肩*....如果你把它变成一个unsigned int,你可以很好地进入2100和一些(如果你有一个函数不断给出数字,你转换它们) (2认同)

Rol*_*man 9

我认为这完全取决于你想做什么.时间/日期类型有一些合适的类型(参见:http://dev.mysql.com/doc/refman/5.0/en/date-and-time-type-overview.html)

  • DATE- 通常为3个字节,范围:1000-01-01to 9999-12-31.
  • DATETIME- 8个字节,范围1000-01-01 00:00:009999-12-31 23:59:59
  • TIMESTAMP- 4个字节范围1970-01-01 00:00:01UTC到2038-01-19 03:14:07UTC.然后,有一些语义问题需要注意:

(int是4个字节,如TIMESTAMP,bigint是8个字节,如DATETIME)

  • 日期存储日历天,日期时间和时间戳都以第二个精度存储日期+时间(日期算术支持亚秒精度,但存储不支持)
  • timestamp存储UTC值.也就是说,您在那里粘贴的任何值都会从会话的时区(默认情况下,服务器的时区)转换为UTC并存储.在检索时,UTC值将再次转换回会话中生效的时区.
  • 可以声明timestamp在插入或更新时自动获取当前时间戳或两者.您最好学习手册了解详细信息(请参阅http://dev.mysql.com/doc/refman/5.1/en/timestamp.html)