1. 程式人生 > >mysql新建表datetime型別欄位不能設定當前預設時間解決方法

mysql新建表datetime型別欄位不能設定當前預設時間解決方法

方法一:
由於MySQL目前欄位的預設值不支援函式,所以以create_time datetime default now() 的形式設定預設值是不可能的。代替的方案是使用TIMESTAMP型別代替DATETIME類 型。
TIMESTAMP列型別自動地用當前的日期和時間標記INSERT或UPDATE的操作。如果有多個 TIMESTAMP列,只有第一個自動更新。
自動更新第一個TIMESTAMP列在下列任何條件下發生:
1. 列值沒有明確地在一個INSERT或LOAD DATA INFILE語句中指定。
2.列值沒有明確地在一個UPDATE語 句中指定且另外一些的列改變值。(注意一個UPDATE設定一個列為它已經有的值,這將不引起TIMESTAMP列被 更新,因為如果你設定一個列為它當前的值,MySQL為了效率而忽略更改。)
3.你明確地設定 TIMESTAMP列為NULL.
4.除第一個以外的TIMESTAMP列也可以設定到當前的日期和時間,只要將列設為NULL ,或NOW()。
所以把日期型別 選擇成timestamp 允許空就可以了
CREATE TABLE test (   
uname varchar(50) NOT NULL,   
updatetime timestamp NULL DEFAULTCURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
如果要在navicat下操作的話,將欄位設定為timestamp ,然後預設值寫上CURRENT_TIMESTAMP即可
方法二:
在MySQL5.0以上版本中也可以使用trigger來 實現此功能。
create table test_time (   
 idint(11),   
 create_time datetime   
);   
delimiter |   
create trigger default_datetime beforeinsert on test_time   
  foreach row   
    if new.create_time is null then
      set new.create_time = now();   
    end if;|   
delimiter ;

相關推薦

mysql新建datetime型別不能設定當前預設時間解決方法

方法一: 由於MySQL目前欄位的預設值不支援函式,所以以create_time datetime default now() 的形式設定預設值是不可能的。代替的方案是使用TIMESTAMP型別代替DATETIME類 型。 TIMESTAMP列型別自動地用當前的日期和時間標

記錄問題:mysqldatetime型別在後臺讀取與前端展示

1.資料庫欄位型別為datetime,model裡:@Column(name = "createtime", length = 20) private Date createTime;2.兩種將資料傳到前端的方法方法一:List<Map<String, Objec

關於Mysql的日期型別設定預設值為當前日期的解決方案

很多人可能會吧日期型別的欄位的型別設定為 date或者 datetime, 但是這兩個型別是無法設定預設值為當前日期的(或者有我不清楚) **因為**MySQL目前欄位的預設值不支援函式 所以 方案一: 把型別設定為date/datetime等,預設值

python將系統時間寫入mysqldatetime型別

dt=datetime.datetime.now().strftime("%Y-%m-%d%H:%M:%S") models.ptask.date_changed=datetime.datetime.fromtimestamp(time.mktime(time.strpti

Mysql資料庫-----記錄和管理

表記錄管理 1.插入記錄(insert)        1)insert into 表名 values(值1),(值2)...;        2)insert into 表名(欄位,欄位2) values(

mysql建立多個的唯一約束

mysql中有些表有時需要做一些欄位的唯一約束,當然你也可以在insert前判斷有無的方式來防止重複,如果不想額外增加程式碼來更靈活的實現一些欄位的唯一約束,mysql提供了兩種方式: 1.unique key   alter table xx add unique ke

MySQL中重複只取第一個值

有時在我們的SQL表中包含很多同名的資料,這樣可以將多維度的資料儲存的一個表中,但是對於查詢會帶來一些麻煩。 如上圖,如果我們只想取每個學校的第一條資料:我們可以使用DISTINCT去重 SQL: select DISTINCT history.school Fro

mysql中查詢varchar型別中的整數(去除小數)

(假設我們有一個students表,表中有個varchar型別的number欄位) 第一次我使用round()函式找出四捨五入後等於其本身的數字: SELECT number FROM student

informix 中建立DateTime型別

建立表如下:  CREATE TABLE WORKORDER_VISIT_LOG (  VISIT_LOG_id VARCHAR(30) NOT NULL,VISIT_DATE Date year to day, VISIT_TIME DateTime year to se

mysql列數 個數

<select id="selectByKeyMoreInfo" parameterType="com.longshine.model.entity.Modeltable" resultMa

mysql獲取的所有

select COLUMN_NAME from information_schema.COLUMNS where table_name = ‘your_table_name’ and table_schema = ‘your_db_name’; 

mysql 建立時 日期預設值為當前時間

    mysql version 5.1     在mysql建立表的時候經常會遇到建立日期欄位需要設定當前時間為預設值的時候,就如sqlserver2000一樣,把預設值設為getdate()即可,我在網上查了N久都沒有查到使用有效的方法,最後自己研究了一些方法與大家分

mysql修改結構和方法總結

我一貫追求的是:在人的肉體與幻想允許的範圍內,獲得最大限度的真誠和信任,以及對所有的一切儘可能長久的保證。《鏡中微瑕》 1、引言 在開發時有時候為了前期資料庫設計不合理或者名稱寫的有問題,需要修改名

Python 從MySQL中提取

con = pymysql.connect(host='192.168.0.10', user='root', passwd='123456', db='living', port = 3306) # 連線 cur = con.cursor() sql_order = 's

MySQL資料庫中tinyint型別讀取資料為true和false

vertx jdbc 取myaql資料也存在這樣的問題,按照如下在進行sql語句編寫時候加上*1就i可以了 今天遇到這麼一個問題,公司最近在做一個活動,然後資料庫需要建表,其中有個欄位是關於獎勵發放的狀態的欄位,結果讀取出來的值為true 一、解決讀取資料為true/

Incorrect datetime value: '' for column Mysql5.6 中datetime 型別的插入問題

在5.0.45-community-nt-log中能正常執行的SQL,在5.6.21中不正常。 1. 1檢視資料庫版本 mysql> select database(), version(); +------------+-----------------------

獲取mysql資料庫註釋及註釋

public static Connection getMySQLConnection() throws Exception {           Class.forName("com.mysql.jdbc.Driver");           Connecti

SQl 語句(常見) 新建,刪除,修改,新增,修改預設

SQl 語句(常見) 新建,刪除,修改表結構 新建表: create table [表名] ( [自動編號欄位] int IDENTITY (1,1) PRIMARY KEY , [欄位1] nV

c# 讀取mysql 某個的所有名稱

1.利用c# sql語句讀取某個表的所有欄位 2.執行下面sql  string strSQL = string.Format("select COLUMN_NAME from information_schema.columns where table_name='" +

mysql批量查詢表、某個註釋缺少問題及解決方式

在開發專案過程中,發現某些表或某個欄位沒有註釋,這樣造成以後維護性差,如何優雅的解決呢 1)table:批量拼接新增表註釋指令碼 SELECT CONCAT('ALTER TABLE ', table_name, ' comment ;') FROM information_schema