應(yīng)用場景:
創(chuàng)新互聯(lián)建站-成都網(wǎng)站建設(shè)公司,專注成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、網(wǎng)站營銷推廣,空間域名,虛擬空間,網(wǎng)站托管維護(hù)有關(guān)企業(yè)網(wǎng)站制作方案、改版、費(fèi)用等問題,請聯(lián)系創(chuàng)新互聯(lián)建站。
1、在數(shù)據(jù)表中,要記錄每條數(shù)據(jù)是什么時候創(chuàng)建的,不需要應(yīng)用程序去特意記錄,而由數(shù)據(jù)數(shù)據(jù)庫獲取當(dāng)前時間自動記錄創(chuàng)建時間;2、在數(shù)據(jù)庫中,要記錄每條數(shù)據(jù)是什么時候修改的,不需要應(yīng)用程序去特意記錄,而由數(shù)據(jù)數(shù)據(jù)庫獲取當(dāng)前時間自動記錄修改時間;實(shí)現(xiàn)方式:
1、將字段類型設(shè)為 TIMESTAMP
2、將默認(rèn)值設(shè)為 CURRENT_TIMESTAMP
舉例應(yīng)用:
1、MySQL 腳本實(shí)現(xiàn)用例
--添加CreateTime 設(shè)置默認(rèn)時間 CURRENT_TIMESTAMPALTER TABLE `table_name`
ADD COLUMN `CreateTime` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間' ;--修改CreateTime 設(shè)置默認(rèn)時間 CURRENT_TIMESTAMPALTER TABLE `table_name`
MODIFY COLUMN `CreateTime` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間' ;--添加UpdateTime 設(shè)置 默認(rèn)時間 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è)置 默認(rèn)時間 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,默認(rèn)值寫上CURRENT_TIMESTAMP
擴(kuò)展資料
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表示格式一樣兩者的不同點(diǎn)如下:
當(dāng)使用timestamp的時候,數(shù)據(jù)有更新的時候這個字段自動更新為當(dāng)前時間,所以可以作為lastmodify使用,這個變化是默認(rèn)設(shè)置,如果想使時間不更新可以設(shè)置DEFAULT CURRENT_TIMESTAMP
timestamp的范圍不能早于1970或者晚于2037,超過這個時間范圍的話為0。
timestamp存儲的時候是轉(zhuǎn)為UTC存儲的,獲取的時候根據(jù)客戶端所在時區(qū)進(jìn)行展示。
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'; ##修改當(dāng)前會話時區(qū)
flush privileges; #立即生效
1、非要用datetime的話就不能用default而要通過trigger來實(shí)現(xiàn)
2、在插入時value用now()函數(shù)、或者自行取運(yùn)行時間
3、字段類型改變?yōu)椋?/p>
datecreated timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
datemodified timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
但是其實(shí)不可行,因為一個表只能有一個CURRENT_TIMESTAMP,但你有三個字段。
所以當(dāng)有多個時間可能還是得結(jié)合方式2與方式3來綜合處理。當(dāng)然全都用方式2也就不會提出這種問題了。
設(shè)置某字段為當(dāng)前時間,修改日期類型為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,默認(rèn)值寫上
current_timestamp.
新聞標(biāo)題:mysql時間怎么調(diào) mysql怎么修改時區(qū)
標(biāo)題URL:http://vcdvsql.cn/article48/hpihep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、App開發(fā)、全網(wǎng)營銷推廣、網(wǎng)站營銷、企業(yè)建站、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)