2010-11-08 140 views
25

应该使用哪些数据类型来保存unix_timestamp值(MySQL)?unix_timestamp(MySQL)的数据类型是什么?

+4

http://dev.mysql.com/doc/refman/5.0/en/datetime.html – teemitzitrone 2010-11-08 16:48:34

+0

时间戳是否与unix_timestamp相同? – jzarsuelo 2010-11-08 16:50:47

+0

@ user239431:UNIX_TIMESTAMP是一个MySQL函数:http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_unix-timestamp – 2010-11-08 16:59:05

回答

33

类型是像整数

int(11) 

是良好的索引和条件像> < =

+14

如果您使用INT,则需要记住签名版​​本仅从-2147483648到2147483647,上限会触发[2038年度错误](http://en.wikipedia.org/wiki/Year_2038_problem)。你可以使用INT(11)UNSIGNED或BIGINT - 有一些警告(http://dev.mysql.com/doc/refman/5.6/en/numeric-type-overview.html)与后者,但它是[大规模(http://en.wikipedia.org/wiki/Integer_(computer_science))。就我个人而言,我对MySQL的内置函数感到更安全,但对于大型数据集的索引和比较函数可能会影响您。 – 2013-03-24 20:21:40

+0

对于后代我+1 William Turrell的评论。从我的角度来看,UNSIGNED INT将是一种方式,但真正的答案将取决于您将数据库信息拉入(如果从头开始编码)的语言。示例:如果您是Java商店,则UNSIGNED INT映射到java.lang.Long(请参阅表5.2,以了解MySQL + Java用户:https://dev.mysql.com/doc/connector-j/en/connector-j -reference型conversions.html)。通过这种方式,您可以在数据库中节省一些空间,同时确保您不会编写会在2038年遇到错误的代码。伟大的观点@WilliamTurrell。 – 2016-02-03 12:25:42

+0

就2038错误而言,是不是会将11中的int(11)'增加到12或13是合理的措施以避免这种情况? – 2017-11-29 13:35:38

10

您要使用的TIMESTAMP data type
它存储为一个时代值,但MySQL显示的值为'YYYY-MM-DD HH:MM:SS'。