應(yīng)用場景:
創(chuàng)新互聯(lián)建站-成都網(wǎng)站建設(shè)公司,專注成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、網(wǎng)站營銷推廣,空間域名,虛擬空間,網(wǎng)站托管維護有關(guān)企業(yè)網(wǎng)站制作方案、改版、費用等問題,請聯(lián)系創(chuàng)新互聯(lián)建站。
1、在數(shù)據(jù)表中,要記錄每條數(shù)據(jù)是什么時候創(chuàng)建的,不需要應(yīng)用程序去特意記錄,而由數(shù)據(jù)數(shù)據(jù)庫獲取當前時間自動記錄創(chuàng)建時間;2、在數(shù)據(jù)庫中,要記錄每條數(shù)據(jù)是什么時候修改的,不需要應(yīng)用程序去特意記錄,而由數(shù)據(jù)數(shù)據(jù)庫獲取當前時間自動記錄修改時間;實現(xiàn)方式:
1、將字段類型設(shè)為 TIMESTAMP
2、將默認值設(shè)為 CURRENT_TIMESTAMP
舉例應(yīng)用:
1、MySQL 腳本實現(xiàn)用例
--添加CreateTime 設(shè)置默認時間 CURRENT_TIMESTAMPALTER TABLE `table_name`
ADD COLUMN `CreateTime` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間' ;--修改CreateTime 設(shè)置默認時間 CURRENT_TIMESTAMPALTER TABLE `table_name`
MODIFY COLUMN `CreateTime` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間' ;--添加UpdateTime 設(shè)置 默認時間 CURRENT_TIMESTAMP 設(shè)置更新時間為 ON UPDATE CURRENT_TIMESTAMPALTER TABLE `table_name`
ADD COLUMN `UpdateTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間' ;--修改 UpdateTime 設(shè)置 默認時間 CURRENT_TIMESTAMP 設(shè)置更新時間為 ON UPDATE CURRENT_TIMESTAMPALTER TABLE `table_name`
MODIFY COLUMN `UpdateTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間' ;2、MySQL工具設(shè)置
修改日期類型為timestamp 并允許空,如下:
CREATE TABLE `test` (`aaaa` varchar(50) NOT NULL,`createday` timestamp NULL DEFAULT
CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP) ENGINE=InnoDB DEFAULT
CHARSET=utf8;
如果是在navicat下操作的話,設(shè)置字段的類型為timestamp,默認值寫上CURRENT_TIMESTAMP
擴展資料
mysql中的時間類型:
mysql中我們用的時間類型有DATE DATETIME TIME TIMESTAMP四種:
1、DATE只表示日期,檢索以YYYY-MM-DD的格式顯示,范圍是1000-01-01到9999-12-31。
2、TIME只表示時間,檢索以HH:MM:SS格式顯示,范圍是00:00:00到23:59:59。
3、DATETIME表示了日期和時間,檢索以YYYY-MM-DD HH:MM:SS格式顯示。
4、TIMESTAMP和DATETIME表示格式一樣兩者的不同點如下:
當使用timestamp的時候,數(shù)據(jù)有更新的時候這個字段自動更新為當前時間,所以可以作為lastmodify使用,這個變化是默認設(shè)置,如果想使時間不更新可以設(shè)置DEFAULT CURRENT_TIMESTAMP
timestamp的范圍不能早于1970或者晚于2037,超過這個時間范圍的話為0。
timestamp存儲的時候是轉(zhuǎn)為UTC存儲的,獲取的時候根據(jù)客戶端所在時區(qū)進行展示。
timestamp占4個字節(jié),datetime占8個字節(jié)。
通過mysql命令行模式下動態(tài)修改
show variables like "%time_zone%";
查看時區(qū)
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | CST |
| time_zone | SYSTEM |
+------------------+--------+
2 rows in set (0.00 sec)
#time_zone說明mysql使用system的時區(qū),system_time_zone說明system使用CST時區(qū)
修改時區(qū)
set global time_zone = '+8:00'; ##修改mysql全局時區(qū)為北京時間,即我們所在的東8區(qū)
set time_zone = '+8:00'; ##修改當前會話時區(qū)
flush privileges; #立即生效
1、非要用datetime的話就不能用default而要通過trigger來實現(xiàn)
2、在插入時value用now()函數(shù)、或者自行取運行時間
3、字段類型改變?yōu)椋?/p>
datecreated timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
datemodified timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
但是其實不可行,因為一個表只能有一個CURRENT_TIMESTAMP,但你有三個字段。
所以當有多個時間可能還是得結(jié)合方式2與方式3來綜合處理。當然全都用方式2也就不會提出這種問題了。
設(shè)置某字段為當前時間,修改日期類型為timestamp并允許空,如下:
create
table
`test`
(`aaaa`
varchar(50)
not
null,`createday`
timestamp
null
default
current_timestamp
on
update
current_timestamp)
engine=innodb
default
charset=utf8;
如果是在navicat下操作的話,設(shè)置字段的類型為timestamp,默認值寫上
current_timestamp.