專業只做數據庫實訓和認證的品牌機構

微信公眾號新浪微博
免費咨詢電話:400-0909-964
當前位置: 網站首頁 > MySQL培訓 > MySQL課程 > MySQL培訓課程:timestamp自動記錄數據的改變時間

MySQL培訓課程:timestamp自動記錄數據的改變時間

文章來源: 更新時間:2016/7/19 16:18:13

在線老師點擊咨詢:

最新學訊:近期OCP認證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯系在線老師,甲骨文官方認證,報名從速!

我要咨詢

MySQL培訓課程:timestamp自動記錄數據的改變時間,timestamp列類型提供一種類型,timestamp值可以從1970的某時的開始一直到2037年,精度為一秒,其值作為數字顯示。你可以使用它自動地用當前的日期和時間標記INSERT或UPDATE的操作。如果你有多個timestamp列,只有第一個自動更新。

自動更新第一個timestamp列在下列任何條件下發生:

`列沒有明確地在一個INSERT或LOAD DATA INFILE語句中指定。

` 列沒有明確地在一個UPDATE語句中指定且一些另外的列改變值。(注意一個UPDATE設置一個列為它已經有的值,這將不引起timestamp列被更新,因為如果你設置一個列為它當前的值,MySQL為了效率而忽略更改。)

`你明確地設定timestamp列為NULL.

除第一個以外的timestamp列也可以設置到當前的日期和時間,只要將列設為NULL,或NOW()。

例如,創建如下的表:

MySQL> CREATE TABLE student

-> (

-> id int,

-> name char(16),

-> english tinyint,

-> chinese tinyint,

-> history tinyint,

-> time timestamp

-> );

向表中插入記錄,可以查看效果:

MySQL> INSERT student(id,name,englisht,Chinese,history) VALUES(11,”Tom”,66,93,67);

查看記錄的存儲情況:

MySQL> SELECT * FROM student;

+------+---------+---------+---------+---------+----------------+

| id | name | english | chinese | history | time |

+------+---------+---------+---------+---------+----------------+

| 11 | Tom | 66 | 93 | 67 | 20010220123335 |

+------+---------+---------+---------+---------+----------------+

你可以看到time列紀錄下了數據錄入時的時間值。如果你更新改記錄,在查看操作的結果:

MySQL> UPDATE student SET english=76 WHERE id=11;

MySQL> SELECT * FROM student;

+------+------+---------+---------+---------+----------------+

| id | name | english | chinese | history | time |

+------+------+---------+---------+---------+----------------+

| 11 | Tom | 76 | 93 | 67 | 20010220125736 |

+------+------+---------+---------+---------+----------------+

可以清楚的看到,time列的時間被自動更改為修改記錄的時間。

有時候你希望不更改任何值,也能打到修改timestamp列的值,這時只要設置該列的值為NULL,MySQL就可以自動更新timestamp列的值:

MySQL> UPDATE student SET time=NULL WHERE id=11;

MySQL> select * from student where id=11;

+------+------+---------+---------+---------+----------------+

| id | name | english | chinese | history | time |

+------+------+---------+---------+---------+----------------+

| 11 | Tom | 76 | 93 | 67 | 20010220130517 |

+------+------+---------+---------+---------+----------------+

通過明確地設置希望的值,你可以設置任何timestamp列為不同于當前日期和時間的值,即使對第一個timestamp列也是這樣。例如,如果,當你創建一個行時,你想要一個timestamp被設置到當前的日期和時間,但在以后無論何時行被更新時都不改變,你可以使用這樣使用:

`讓MySQL在行被創建時設置列,這將初始化它為當前的日期和時間。

`當你執行隨后的對該行中其他列的更改時,明確設定timestamp列為它的當前值。

例如,當你在修改列時,可以把原有的值付給timestamp列:

MySQL> UPDATE student SET english=66,time=time WHERE id=11;

MySQL> select * from student where id=11;

+------+------+---------+---------+---------+----------------+

| id | name | english | chinese | history | time |

+------+------+---------+---------+---------+----------------+

| 11 | Tom | 66 | 93 | 67 | 20010220130517 |

+------+------+---------+---------+---------+----------------+

另一方面,你可能發現,當你想要實現上面這個效果時,很容易用一個你用NOW()初始化的DATETIME列然后不再改變它,這樣也許直接些。 但是,timestamp列的以后好處是存儲要求比較小,節省空間。timestamp的存儲需求是4字節,而DATETIME列的存儲需求是8字節。

本文地址:http://www.erickasouza.com/mysql/kecheng/12516590630.html 轉載請注明!


在線預約 搶先報名 獲取課程排期

Oracle培訓機構

金牌講師<>

冉乃綱-老師CUUG金牌講師
冉老師 CUUG金牌講師 Oracle及RedHat高級講師、Unix/Linux 資深專家...[詳細了解老師]

免費咨詢上課流程 客服在線中

陳衛星-老師CUUG金牌講師
陳老師 CUUG金牌講師 精通Oracle管理、備份恢復、性能優化 11年Ora...[詳細了解老師]

免費咨詢上課流程 客服在線中

選學校如何選擇適合自己的學校

CUUG -CHINA UNIX USER GROUP,是國際UNIX組織UNIFORUM的中國代表,是國內悠久的專業UNIX培訓機構,被譽為中國UNIX 的搖籃。多年來,以提高教學質量為本,強調素質教育,積極引進、消化國外的新技術,有效的結合中國....[詳情]

一站式服務(從入學到就業一幫到底)

入學

學習

就業

實操

食宿
關閉
海淀校區:北京市海淀區紫竹園路88號紫竹花園D座703(CUUG)
課程咨詢:010-59426307 010-59426319 400-0909-964
企業服務:139 1050 4818(劉經理)
部分信息來源于網絡,如有錯誤請聯系指正!
微信:聞老師
微信:于老師
版權所有@北京神腦資訊技術有限公司 (CUUG,中國UNIX用戶協會) Copyright 2016 ALL Rights Reserved 京ICP備11008061號-1