2014-05-23 57 views
1

對於時間戳字段的默認值,我將在phpMyAdmin的「按定義」中輸入什麼內容以從今天起獲得+1個月?如何在phpMyAdmin中將默認時間戳設置爲+1月

使用MySQL 5.6.17,PHP 5.5.12,阿帕奇2.4.9,wampserver 2.5

我已經試過

1 month

strtotime('+1 month')

+2

雖然你的問題很有趣,我會建議通過PHP而不是通過PMA處理這個問題。讓模型處理這個。如果沒有值傳遞,然後插入'strtotime('+ 1 month')' –

+0

您是否嘗試過使用'date_trunc('day',NOW()+ interval'1 month')'SQL函數。 –

+0

沒有贊德我沒有 – Andrew

回答

2

從我讀過什麼,phpmyadmin「定義」值基本上是DEFAULT值在CREATE TABLE查詢中的值。如果這是真的,你實際上不能提供一個PHP函數作爲默認值。然後你有(至少)兩個選項。

一個,你可以設置的值,當你INSERT到數據庫:

$myDate = date('Y-m-d H:i:s', strtotime('+1 month')); 

並運行查詢:

INSERT INTO myTable (myDate) VALUES ('{$myDate}'); 

(雖然,你使用mysqli或PDO和數據綁定以在您的查詢中設置該值。Cf http://us1.php.net/pdohttp://us2.php.net/mysqli)。

兩個,或者你可以創建一個觸發器:

CREATE TRIGGER myTiggerName 
BEFORE INSERT ON myTable 
FOR EACH ROW 
SET NEW.myDate = DATE_ADD(NOW(), INTERVAL 1 MONTH); 

這可能是最接近你想要做什麼。無論何時向myTable表中插入一行,它都會將myDate列設置爲NOW() + 1 MONTH

在上例中,觸發器將始終設置爲myDate。如果你只是想設置它,如果列爲空,你可以嘗試:

CREATE TRIGGER myTiggerName 
BEFORE INSERT ON myTable 
FOR EACH ROW 
IF NEW.myDate IS NULL THEN 
    SET NEW.myDate = DATE_ADD(NOW(), INTERVAL 1 MONTH); 
END IF; 
+0

我還沒有使用過多的觸發器,我認爲它可能更有意義,只需在插入語句而不是phpMyAdmin中定義它,現在我想它... – Andrew

+0

@Andrew永遠不要過早嘗試:) – Cully

1

我會建議處理這個由你的模型,而不是SQL。

嘗試獲得的日期有點像這樣:

select timestamp + interval '2' day from xyz 
相關問題