使用MySQL应该将时间数据存储为Int,这可以是自UTC时间1970年1月1日午夜以来的毫秒数或数据库中的时间戳。
我知道两者都有优势,这是最好的方法吗?
答案 0 :(得分:3)
从PHP代码的角度来看,无法肯定地说,但是将其存储在MySQL日期时间格式中会打开所有MySQL日期/时间函数,而无需使用FROM_UNIXTIME进行首次转换。此外,时间戳有2038年的限制 - 请参阅Why do timestamps have a limit to 2038?
正如评论所说,可以转换任何一种方式,因此在SQL语句或PHP代码中,它会成为您最想要的地方的问题。
恕我直言,时间/日期不只是一个数字 - 它们在我们使用它们时有特殊目的,因此将它们存储为一个数字限制了自己。
答案 1 :(得分:0)
在MySQL中使用时间戳时还需要考虑其他一些事项。
您(不是,请参阅下面的编辑)只允许数据库中每个表的一个时间戳列
使用timestamp列可以使用datetime列无法做的一件很酷的事情是你可以使用默认的CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(再次只能得到一个可以执行此操作的列)。
除了那个以及已经提到的其他事情之外,我认为这是使用这些专栏的唯一动机。编辑: 您可以在表中包含多个时间戳列。但是,每个表只能有一个DEFAULT CURRENT_TIMESTAMP时间戳。请注意,如果向表中添加列:
ALTER TABLE table_name ADD COLUMN col_name TIMESTAMP
并且该表中没有另一个时间戳列,它隐式地将其添加到定义中。至少在MySQL 5.0.92上。请参阅下面的讨论。