有什么更好的方法来保存db中的日期而不是time()?

时间:2011-04-28 21:00:55

标签: php mysql

我习惯使用time()将db中的日期保存为INT(11)。 考虑到time()的限制,有没有更好的方法来保存它?

我不想使用数据库自​​己的DATE类型(以及所有db自己的日期函数)。

由于

5 个答案:

答案 0 :(得分:5)

好的,从评论中我知道使用time()的问题在于我们希望将01/01/1970以外的日期表示为/ 2038范围。

在这种情况下,我认为最好将数据库的日期格式化为YmdHis,存储在BIGINT中(如果不需要时间,则只存储在INT中的Ymd)。您可以使用date_create("now")->format($fmt)代替time(),其中$ fmt的日期为“Ymd”,日期+时间为“YmdHis”

这给出了922,337,203AD的最新日期和最早的-922,337,203BC时间,或者在INT中没有时间的214,748AD到-214,748BC。

答案 1 :(得分:1)

使用$_SERVER['REQUEST_TIME']

它对于整个请求是常量,并且比time()(和UNIX_TIMESTAMP())更快,因为它只需要数组查找而不是函数调用。

答案 2 :(得分:0)

避免在DB中管理标准时间是很奇怪的。您是否考虑过所有可能的方法来表示正确格式化的日期字段?

MySQL::Date and time functions

PostgreSQL::functions datetime

在某些情况下,以正确的格式存储日期会更灵活,更有效。

答案 3 :(得分:0)

日期时间对于调试和阅读更具可读性,但与日期格式的时间戳相同,查询中的NOW关键字使事情干净整洁,尤其是如果您不需要从查询中分离变量:

INSERT INTO `mytable` (`id`,`title`,`created`) VALUES (NULL, 'my awesome record', NOW());

答案 4 :(得分:0)

您可以将内置数据库类型用于日期和时间,或者您可以在表中创建三个整数列并将日期保存为整数。无论什么有效,都很容易处理。