用于在mySQL中存储日期的数据类型

时间:2013-06-27 00:29:46

标签: php mysql sqldatatypes

我无法找到一个好答案的快速问题。当我开始使用PHP和mySQL时,我学会了将日期/时间存储为Unix时间戳。 mySQL数据类型是BIGINT,PHP的日期函数在处理这个方面做得很好。当我查看文档时,似乎Timestamp数据类型变得更加突出。存储日期过时的BIGINT方式是什么?关于哪种方法现在更好用,是否有一般思路?

我知道timestamp数据类型的默认值或更新的'当前时间戳'很好。

想法?

提前致谢

2 个答案:

答案 0 :(得分:1)

我要给出的主要论点是这个数据类型是为作业而设计的。

timestamp的一个优点是,软件了解该数字实际上是一个日期,并将显示人类可读日期。将日期存储为int时,这始终是个问题。

要记住的一件事是timestamp在1970年1月1日之前的日期不起作用,但这与int方法没有区别。

答案 1 :(得分:1)

Andrew,您不应该使用任何类型的INT数据类型来保持日期。 MySQL提供了很多选项,例如TIMESTAMP(如你所提到),DATETIME,DATE,TIME,YEAR。您还可以更轻松地使用本机MySQL时间函数。所以,没有理由真正使用任何其他数据类型。

[编辑]

MYSQL documentation对其数据类型非常清楚:

The DATETIME type is used for values that contain both date and time parts. MySQL retrieves and displays DATETIME values in ‘YYYY-MM-DD HH:MM:SS’ format. The supported range is ’1000-01-01 00:00:00′ to ’9999-12-31 23:59:59′.

The TIMESTAMP data type is used for values that contain both date and time parts. TIMESTAMP has a range of ’1970-01-01 00:00:01′ UTC to ’2038-01-19 03:14:07′ UTC.