使用NOW()命令为datetime构建一个数组

时间:2013-06-02 14:21:22

标签: php mysql codeigniter

好的我有一个mySQL表,里面有几个日期列,它的设置是为了有一个创建日期和更新日期。 UpdateTimeStamp列使用更新时更新CURRENT_TIMESTAMP属性自动更新, 我的理解是你只能以这种特殊的方式使用一个时间戳,这很好。

因此,在创建的列上,我需要手动添加创建记录的日期作为日期时间列。

我已经读过你可以使用NOW()命令。但是在下面使用它会给我带来一个未定义的函数错误。我试过它只是'CreateDate'=> NOW(),它会产生相同的错误或使用'CreateDate'=> set_value('NOW()')不会产生错误,但没有为此列的数据库输入值。

form_data = array(
    'ClientID' => set_value('ClientID'),
    'ClientReference' => set_value('ClientReference'),
    'CreateDate' => set_value(NOW()),
    'Gender' => set_value('Gender'),
    'MaritalStatus' => set_value('MaritalStatus'),
    'ContactNumber' => set_value('ContactNumber'),
    'Nationality' => set_value('Nationality'),
    'Ethnicity' => set_value('Ethnicity'),
    'ClientNotes' => set_value('ClientNotes')
);

我已经尝试了你提供的所有答案,但仍然无法让我添加到数据库,但CreateDate值为0000-00-00 00-00-00

4 个答案:

答案 0 :(得分:0)

如果您的mysql列类型为DATETIME:

'CreateDate' => set_value(date('Y-m-d H:i:s'))

如果是TIMESTAMP:

'CreateDate' => set_value(time())

答案 1 :(得分:0)

您可以在插入和更新时自动设置。

在“CreateDate”上使用CURRENT_TIMESTAMP的默认值,以便在创建记录时自动设置,并在更改行时更新“UpdateTimeStamp”的触发器

CREATE TABLE Clients (
  ClientID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  /* Other Columns */
  CreateDate TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  UpdateTimeStamp TIMESTAMP NULL
) ENGINE=InnoDB;

CREATE TRIGGER ClientsUpdate 
  BEFORE UPDATE ON Clients FOR EACH ROW
  SET NEW.UpdateTimeStamp = NOW();

答案 2 :(得分:0)

PHP中没有now()函数,您正在寻找的是time()函数。但是,这将返回时间戳,例如1370183405。

MySql有一个now()函数,在这种情况下你需要用引号括起来: -

'CreateDate' => set_value('NOW()'),

或者在PHP中你可以这样做: -

'CreateDate' => set_value((new DateTime())->format('Y-m-d H:i:s')),

答案 3 :(得分:0)

几乎正确, 我在没有set_value的情况下尝试了它

'CreateDate' => set_value(date('Y-m-d H:i:s')),

这很有效。不知道它有什么不同