MySQL中預設值中用時間函式的問題

2021-04-28 07:11:53 字數 981 閱讀 8567

今天在上課的時候在測試mssql建表的時候 註冊時間預設值用getdate()可以獲取插入值時候的時間create table temp( id int primary key, in_time datetime not null default getdate() )

但是在mysql建表練習的時候不能用now()進行對應的做法:

create table temp(    id int primary key,    in_time datetime not null default now() )

卻不行,最後發現mysql中有個資料型別:時間戳timestamp,這個型別如其意思就像郵戳一樣在更改信內容時時郵戳上的時間不會改變,這種型別用來定義註冊時間再好不過了。

做了具體的改動:

create table temp(    id int primary key,    in_time timestamp not null defaultnow() )

不過建議用這種做法:

create table temp(    id int primary key,    in_time timestamp not null default current_timestamp )

如果想在更新表內內容時候預設的時間戳也會便會則在穿件時間字段時候後面加on update current_timestamp 即可:

create table temp(    id int primary key,    in_time timestamp not null default current_timestamp on update current_timestamp )

如果時間戳用在乙個固定不變的時間上,比如使用者的註冊時間上那再好不過了,不過這種在資料庫中對時間能否因為需求的變更而變更顯得相當麻煩,因為在不穩定的需求過程中你修改資料庫表結構的代價畢竟比在程式裡加一句update in_time(就是更新時間,具體問題具體寫法)更大。

程式設計,按嚴格的執行順序和需求來。

設定mysql中時間的預設值

實現方式 1 將字段型別設為 timestamp 2 將預設值設為 current timestamp 舉例應用 新增createtime 設定預設時間 current timestamp alter table table name add column createtime datetime n...

lua 函式 預設值 定義函式引數的預設值

如果你想要命名引數和預設值,如php或python,你可以使用表構造函式呼叫你的函式 myfunction 函式本身可以有這樣的簽名 function myfunction t setmetatable t,local a,c t 1 or t.a,t 2 or t.b,t 3 or t.c fun...

MySQL預設值約束

1 預設值約束 特點 1 乙個表可以有很多的預設值約束 2 預設值約束只能針對某乙個字段來說 3 預設值約束意味著,該欄位如果沒有手動賦值,會按預設值處理 2 如何在建表時指定預設值約束?create table 資料庫名.表名稱 欄位名1 資料型別 primary key,欄位名2 資料型別 un...