1

好的,我有一个 mySQL 表,其中有几个日期列,它被设置为有一个创建日期和一个更新日期。UpdateTimeStamp 列使用 on update CURRENT_TIMESTAMP 属性自动更新,据我了解,您只能以这种特殊方式使用一个时间戳,这很好。

因此,在 createdate 列上,我需要手动添加创建记录的日期它的 datetime 列。

我已经读到您可以为此使用 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

4 回答 4

0

如果您的 mysql 列类型 DATETIME:

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

如果时间戳:

'CreateDate' => set_value(time())
于 2013-06-02T14:25:32.710 回答
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();
于 2013-06-02T14:28:19.467 回答
0

PHP 中没有 now() 函数,您要查找的是time()函数。但是,这将返回一个时间戳,例如 1370183405。

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

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

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

'CreateDate' => set_value((new DateTime())->format('Y-m-d H:i:s')),
于 2013-06-02T14:28:59.290 回答
0

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

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

这奏效了。不知道它有什么不同

于 2013-06-02T15:35:40.917 回答