2013-06-02 32 views
1

好的我有一個mySQL表,它包含幾個日期列,它被設置爲有創建日期和更新日期。 UpdateTimeStamp列自動使用on update更新CURRENT_TIMESTAMP屬性, 更新它的我的理解是,你只能以這種特殊的方式使用一個時間戳,這很好。使用NOW()命令爲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

+1

NOW()是一個MySQL函數,因此您需要使用PHP日期函數來代替CreateDate => set_value(date('Ymd h:i:s')'或類似的函數在你想要的日期格式上。 –

回答

0

如果你的mysql列類型DATETIME:

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

如果TIMESTAMP:

'CreateDate' => set_value(time()) 
0

你可以同時擁有自動設置在插入和更新。

使用CURRENT_TIMESTAMP的默認值的「CREATEDATE」,所以它會自動設定當您創建記錄,並觸發更新「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(); 
0

沒有現在()函數在PHP中,你正在尋找的是time()函數。然而,這將返回一個時間戳,如1370183405.

MySQL有一個now()功能在這種情況下,你需要用它的報價: -

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

或者在PHP中,你可以做: -

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

接近直角, 我試了一下沒有SET_VALUE在這麼

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

而且工作。不知道它有什麼不同

相關問題