2010-05-13 109 views
1

我用笨的一个小项目,和我的模型正确工作除了日期。我有定义的列:设置笨MySQL的日期时间列时间()始终将其设置为0

created_at日期时间不为空

和我的模型代码包括其数组传递到DB->插入在:

'created_at'=>时间()

这产生一个日期时间值为0000-00-00 00:00:00。

当我将其更改为: “(。时间() ”)“

'created_at'=> FROM_UNIXTIME”

它仍然产生0日期时间值。

我在做什么错?我怎样才能将这个字段设置为给定的unix时间?另外,我知道mysql为你自动设置TIMESTAMP列 - 我对这个解决方案不感兴趣。

到目前为止,我无法找到这个在网络上一个完整的例子。

回答

2

日期时间需要YYYY-MM-DD,其中-作为时间()产生一个UNIX时间戳这是自1月1日1970年的秒的整数。两个日期是完全不同的字符串。

如果您希望使用PHP来填充你的MySQL日期时间字段,你必须使用:

date('Y-m-d h:i:s'); 

或者类似的规定呢。

+0

谢谢。从codeigniter的例子来看,它看起来像活动的记录类正在做一些神奇的事情来将unix时间戳转换为日期,并且我认为我只是没有正确的列命名约定或其他东西。现在我看到没有魔法了,他们的例子只是假设一个整数日期字段。 – Jake 2010-05-13 22:54:26

+0

其实,任何想法为什么from_unixtime方法不起作用呢? – Jake 2010-05-13 22:55:33

+0

@Jake。活动记录会逃避您放入created_at中的内容 – 2010-05-14 06:34:34

0

避免now(),原因now()根据您的配置文件中的“时间参考”设置,将当前时间作为Unix时间戳返回,请参考服务器的本地时间或GMT。如果您不打算将主时间参考设置为GMT(如果您运行允许每个用户设置自己的时区设置的站点,通常会执行此操作),但使用此功能不会对PHP的time()函数使用此功能。

相关问题