将codeigniter mysql datetime列设置为time()始终将其设置为0
我在一个小项目中使用Codeigniter,除了日期之外,我的模型工作正常。我定义了一个列: 在datetime创建的\u不为空 我的模型代码包含在传递到db->insert的数组中: '已在'=>时间()创建 这将生成日期时间值0000-00-00:00:00 当我将其更改为: “从\u unixtime(“.time()”)在“=>”处创建的\u” 它仍然生成0日期时间值 我做错了什么?如何将此字段设置为给定的unix时间?另外,我知道mysql会自动为您设置时间戳列——我对这个解决方案不感兴趣将codeigniter mysql datetime列设置为time()始终将其设置为0,mysql,unix,datetime,codeigniter,timestamp,Mysql,Unix,Datetime,Codeigniter,Timestamp,我在一个小项目中使用Codeigniter,除了日期之外,我的模型工作正常。我定义了一个列: 在datetime创建的\u不为空 我的模型代码包含在传递到db->insert的数组中: '已在'=>时间()创建 这将生成日期时间值0000-00-00:00:00 当我将其更改为: “从\u unixtime(“.time()”)在“=>”处创建的\u” 它仍然生成0日期时间值 我做错了什么?如何将此字段设置为给定的unix时间?另外,我知道mysql会自动为您设置时间戳列——我对这个解决方案不感
到目前为止,我在网上还找不到一个完整的例子。datetime需要一个YYYY-MM-DD字符串,其中as time()生成一个UNIX时间戳,它是自1970年1月1日以来秒的整数。这两个日期完全不同 如果希望使用PHP填充MySQL日期时间字段,则必须使用:
date('Y-m-d h:i:s');
或者是类似的东西。避免
now()
,因为now()
根据配置文件中的“时间参考”设置,以Unix时间戳的形式返回当前时间,参考服务器的本地时间或GMT。如果您不打算将主时间引用设置为GMT(如果您运行的站点允许每个用户设置自己的时区设置,您通常会这样做),那么与PHP的time()
函数相比,使用此函数没有任何好处 谢谢。从codeigniter示例来看,active record类似乎在发挥某种魔力,将unix时间戳转换为日期,我认为我只是没有正确的列命名约定或其他什么。现在我明白了这并没有什么神奇之处,他们的例子只是假设一个整数日期字段。实际上,你知道为什么from_unixtime方法不起作用吗?@Jake。活动记录将逃避您在创建时放入的内容