2014-01-20 82 views
9

我有一張表,其中有一個date列。當我在當前日期插入新的註冊表時,是否有辦法讓MySQL自動填充此字段?或者這是默認自動生成的?MySQL日期列自動填寫當前日期

P.S:我使用phpMyAdmin

+1

這應該是你在找什麼... http://stackoverflow.com/questions/168736/how-do-you-set- a-default-value-for-mysql-datetime-column –

+0

可能的重複項:http://stackoverflow.com/questions/3696778/create-table-fail-in-mysql-when-using-curdate-as-default ,http://stackoverflow.com/questions/168736/how-do-you-set-a-default-value-for-a-mysql-datetime-column,http://stackoverflow.com/questions/5818423/set -now-as-default-value-date-date-datatype –

回答

1

您可以指定日期的默認值類似於任何其他列。語法如下:

my_date DATE DEFAULT '2014年1月19日'

+2

是的,但我需要每天更改此默認值嗎?我只希望它能夠在當前日期爲我自動填充字段。 –

+1

似乎只有使用'timestamp'數據類型纔有可能:http://stackoverflow.com/questions/5818423/set-now-as-default-value-for-datetime-datatype –

15

設置默認在您的MySQL查詢

CURRENT_TIMESTAMP 
1

,你必須使用

現在()

函數你想填補當前時間的地方。

即:

INSERT INTO user_rights (`user_id`,`right`,`group_id`,`created_date`) VALUES ('42', '160', '1', now()); 
14

雖然是舊的文章,也許這一形象將幫助,因爲它是更明確: (對於phpMyAdmin的用戶)

enter image description here

此配置集,字段值如:

2015-12-11 07:50:47

PS:請注意,時間戳將設置您的服務器的時間! (即上面的例子從太平洋時間(07:50:47)得到時間,但本地時間可能來自西班牙用戶16:50:47)請記住這一點。

另外,如果你已經有了一個「創建日期」,你可能需要另一列,更新修改日期每當有更新: 你只需要設置的屬性字段更新當前時間戳

準備好搖滾!

enter image description here

0

你可以做這樣的事情從SQL屏幕

ALTER TABLE `table_name` CHANGE `created_at` `created_at` TIMESTAMP NOT NULL 
2

我知道這可能不是直接回答這個問題,但我相信這是最可用的解決方案。

我強烈建議使用DATETIME或TIMESTAMP數據類型作爲問題列。
如果您正在使用相當當前版本的MySQL,MySQL將爲您完成這項工作。

細節
要非常清楚,從5.6開始。5,對於時間戳& DATETIME數據類型,你可以做到以下幾點:

  1. 設置(使用NOW()或它的別名,如CURRENT_TIMESTAMP之一)
    的當前日期&時間缺省值,百般當你插入一個新的行到這個表中TIMESTAMP或DATETIME列與此默認值將獲得當前的日期和時間
  2. 設置一個ON更新約束,將更新一列到當前日期&時間,(你猜對了)行更新

方法如下:
一個示例的CREATE TABLE語句:

CREATE TABLE t1 (
ts1 DATETIME ON UPDATE CURRENT_TIMESTAMP 
,ts2 DATETIME DEFAULT NOW() 
); 

請注意,DATETIME可以與時間戳有效相同的功能所取代。
此外,我建議使用DATETIME數據類型而不是TIMESTAMP,因爲DATETIME具有更大範圍的日期可以支持。值得一提的是,對於那些少數重要的案例,TIMESTAMP較小。
欲瞭解更多詳情,請點擊這裏閱讀我的回答:https://stackoverflow.com/a/26117532/1748266