設(shè)置某字段為當(dāng)前時(shí)間,修改日期類型為timestamp并允許空,如下:
創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)措美,十多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792
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,默認(rèn)值寫上
CURRENT_TIMESTAMP.
應(yīng)用場(chǎng)景:
1、在數(shù)據(jù)表中,要記錄每條數(shù)據(jù)是什么時(shí)候創(chuàng)建的,不需要應(yīng)用程序去特意記錄,而由數(shù)據(jù)數(shù)據(jù)庫(kù)獲取當(dāng)前時(shí)間自動(dòng)記錄創(chuàng)建時(shí)間;2、在數(shù)據(jù)庫(kù)中,要記錄每條數(shù)據(jù)是什么時(shí)候修改的,不需要應(yīng)用程序去特意記錄,而由數(shù)據(jù)數(shù)據(jù)庫(kù)獲取當(dāng)前時(shí)間自動(dòng)記錄修改時(shí)間;實(shí)現(xiàn)方式:
1、將字段類型設(shè)為 TIMESTAMP
2、將默認(rèn)值設(shè)為 CURRENT_TIMESTAMP
舉例應(yīng)用:
1、MySQL 腳本實(shí)現(xiàn)用例
--添加CreateTime 設(shè)置默認(rèn)時(shí)間 CURRENT_TIMESTAMPALTER TABLE `table_name`
ADD COLUMN `CreateTime` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間' ;--修改CreateTime 設(shè)置默認(rèn)時(shí)間 CURRENT_TIMESTAMPALTER TABLE `table_name`
MODIFY COLUMN `CreateTime` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間' ;--添加UpdateTime 設(shè)置 默認(rèn)時(shí)間 CURRENT_TIMESTAMP 設(shè)置更新時(shí)間為 ON UPDATE CURRENT_TIMESTAMPALTER TABLE `table_name`
ADD COLUMN `UpdateTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間' ;--修改 UpdateTime 設(shè)置 默認(rèn)時(shí)間 CURRENT_TIMESTAMP 設(shè)置更新時(shí)間為 ON UPDATE CURRENT_TIMESTAMPALTER TABLE `table_name`
MODIFY COLUMN `UpdateTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間' ;2、MySQL工具設(shè)置
通過mysql命令行模式下動(dòng)態(tài)修改
show variables like "%time_zone%";
查看時(shí)區(qū)
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | CST |
| time_zone | SYSTEM |
+------------------+--------+
2 rows in set (0.00 sec)
#time_zone說明mysql使用system的時(shí)區(qū),system_time_zone說明system使用CST時(shí)區(qū)
修改時(shí)區(qū)
set global time_zone = '+8:00'; ##修改mysql全局時(shí)區(qū)為北京時(shí)間,即我們所在的東8區(qū)
set time_zone = '+8:00'; ##修改當(dāng)前會(huì)話時(shí)區(qū)
flush privileges; #立即生效
在創(chuàng)建表的時(shí)候是不支持函數(shù)的,而且datetime本身是不支持默認(rèn)是now()的,必須使用timestamp這個(gè)類型,如下:
CREATE
TABLE
blogentries
(
blog_id
INT
(100)
PRIMARY
KEY,
author_id
INT
REFERENCES
author
(author_id),
title
TEXT
NOT
NULL,
description
TEXT,
TYPE
NVARCHAR(10)
NOT
NULL,
allowcomment
CHAR(1)
NOT
NULL,
markprivate
CHAR(1)
NOT
NULL,
body
TEXT
NOT
NULL,
datecreated
TIMESTAMP
,
datepublish
TIMESTAMP
,
datemodified
TIMESTAMP
defAULT
CURRENT_TIMESTAMP
ON
UPDATE
CURRENT_TIMESTAMP
)
defAULT
CURRENT_TIMESTAMP
ON
UPDATE
CURRENT_TIMESTAMP就是插入時(shí)默認(rèn)當(dāng)前時(shí)間,更新時(shí)更新為當(dāng)前時(shí)間。另外有一個(gè)問題就是Mysql目前一個(gè)表只支持一個(gè)字段有默認(rèn)當(dāng)前時(shí)間,所以說你的datecreated和datepublish需要在插入函數(shù)中處理,例如
insert
blogentries(blog_id,title,datecreated)
values(1,
'help
me',
now());
同理,發(fā)表時(shí)間也可以用同樣的方式插入。
希望能夠幫助你。