1

OK私は、いくつかの日付列を持つmySQLテーブルを持っています.作成日と更新日があるように設定されています. UpdateTimeStamp 列は、on update CURRENT_TIMESTAMP 属性を使用して自動的に更新されます。この特別な方法で使用できるタイムスタンプは 1 つだけであり、これで問題ないことを理解しています。

そのため、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

ほぼ正しいので、set_valueなしで試してみました

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

そして、それはうまくいきました。それがどんな違いを生むのか分からない

于 2013-06-02T15:35:40.917 に答える
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 に答える