好的我有一个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
答案 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')),
这很有效。不知道它有什么不同