我习惯于将日期保存为INT(11),并使用time()
函数。考虑到time()
的限制,是否有更好的方法来保存日期?
我不想使用数据库自带的DATE类型(以及所有数据库自带的日期函数)。
谢谢。
我习惯于将日期保存为INT(11),并使用time()
函数。考虑到time()
的限制,是否有更好的方法来保存日期?
我不想使用数据库自带的DATE类型(以及所有数据库自带的日期函数)。
谢谢。
好的,从评论中我理解到,使用time()的问题在于我们要表示01 / 01 / 1970到2038年之外的日期。
在这种情况下,我认为最好将日期格式化为YmdHis
,存储在BIGINT中(如果不需要时间,则只需Ymd
)。您可以使用date_create(“now”) ->format($fmt)
而不是time()
,其中$fmt分别为仅日期的'Ymd'或日期+时间的“YmdHis”
这给出了一个具有时间的最新日期,介于922,337,203AD和早于-922,337,203BC之间,或者没有时间的INT中为214,748AD至-214,748BC。
使用 $_SERVER['REQUEST_TIME']
。
它是整个请求的常量,比 time()
(和 UNIX_TIMESTAMP()
)更快,因为它只需要进行数组查找而不是函数调用。
$_SERVER['REQUEST_TIME']
更快,这就是我想说的。 - Halcyon日期时间更易于调试和阅读,但与时间戳相同的努力用于日期格式化。查询中的NOW关键字使事情变得干净整洁,特别是如果您不需要除查询之外的变量:
INSERT INTO `mytable` (`id`,`title`,`created`) VALUES (NULL, 'my awesome record', NOW());
date('Y',-200000000)
=> 1963)。 - Christian避免在数据库中使用标准时间管理似乎有些奇怪。你是否考虑过表示正确格式日期字段的所有可能方法?
在某些情况下,以正确格式存储日期更加灵活且更有效率。
你可以使用内置的数据库类型来处理日期和时间,或者在表中创建三个整数列,并将日期保存为整数。无论哪种方法都可以,只要易于处理即可。