2013-11-24 28 views
5

我有一個MySQL表,有一些日期, 我需要其中一個有一個默認值等於當前時間, 我使用'Sequel Pro'來構建數據庫, 然後我寫'now()' (和'GETDATE()')的默認值,但不起作用。如何使用Sequel PRO將「默認值」設置爲「NOW()」?

有人可以幫助我,如何使用Sequel PRO將「默認值」設置爲「NOW()」?

錯誤:

An error occurred when trying to change the field 'DataDoPedido' via

ALTER TABLE Reserva CHANGE DataDoPedido DataDoPedido DATE NOT NULL DEFAULT 'now()'

MySQL said: Invalid default value for 'DataDoPedido'

感謝。

+0

值得注意的是,使用'CURRENT_TIMESTAMP'作爲'DEFAULT'對於MySQL 5.6.x + –

回答

7

對於MySQL,爲列指定的DEFAULT必須是常數;它不能從函數返回。一個例外是TIMESTAMP數據類型,它可以有一個DEFAULT CURRENT_TIMESTAMP

如果您需要初始化DATE列,則一種解決方法是創建一個BEFORE INSERT ON觸發器。

+0

謝謝。 我可以像PHP中的DATE一樣使用TIMESTAMP嗎? 我將DATE更改爲數據庫上的TIMESTAMP並工作,但我從未使用TIMESTAMP,與'date'有什麼區別? –

+1

MySQL中的'DATE'數據類型沒有時間部分,只有年 - 月 - 日,所以當它被轉換爲'DATETIME'或'TIMESTAMP'時,時間部分被認爲是午夜00:00:00。 「DATETIME」和「TIMESTAMP」數據類型的分辨率可以降至一秒。使用MySQL JDBC驅動程序,DATE,DATETIME和TIMESTAMP基本上是可以互換的。不確定PHP。 – spencer7593