MySQL是一個(gè)流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它支持多種數(shù)據(jù)類型,包括時(shí)間類型。MySQL時(shí)間類型主要有5種:DATE、TIME、DATETIME、TIMESTAMP和YEAR。
DATE類型:表示日期,格式為'YYYY-MM-DD'。例如:'2021-05-03'
CREATE TABLE `example` ( `date` DATE NOT NULL );
TIME類型:表示時(shí)間,格式為'HH:MM:SS'。例如:'10:30:59'
CREATE TABLE `example` ( `time` TIME NOT NULL );
DATETIME類型:表示日期和時(shí)間,格式為'YYYY-MM-DD HH:MM:SS'。例如:'2021-05-03 10:30:59'
CREATE TABLE `example` ( `datetime` DATETIME NOT NULL );
TIMESTAMP類型:表示日期和時(shí)間,格式為'YYYY-MM-DD HH:MM:SS'。與DATETIME相似,但是它的取值范圍比DATETIME更小,只有1970-01-01 00:00:01 UTC(格林威治標(biāo)準(zhǔn)時(shí)間)到2038年01月19日03時(shí)14分07秒 UTC之間的值。這種類型的數(shù)據(jù)通常用于記錄數(shù)據(jù)的修改時(shí)間。如果沒有指定值,則默認(rèn)為當(dāng)前時(shí)間。
CREATE TABLE `example` ( `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );
YEAR類型:表示年份,格式為'YYYY'。例如:'2021'
CREATE TABLE `example` ( `year` YEAR(4) NOT NULL );
MySQL還提供了一些函數(shù)來處理時(shí)間類型的數(shù)據(jù),例如CURDATE()、CURRENT_TIME() 和 TIMEDIFF()等等。例如:
SELECT CURDATE(); -- 返回當(dāng)前日期,格式:'YYYY-MM-DD' SELECT CURRENT_TIME(); -- 返回當(dāng)前時(shí)間,格式:'HH:MM:SS' SELECT TIMEDIFF('10:30:59', '09:45:20'); -- 返回時(shí)間差,格式:'HH:MM:SS'
在MySQL中,可以使用UNIX_TIMESTAMP()函數(shù)將DATETIME或TIMESTAMP類型的數(shù)據(jù)轉(zhuǎn)換為Unix時(shí)間戳。Unix時(shí)間戳表示從1970年1月1日00:00:00 UTC開始的秒數(shù),可以用于存儲(chǔ)、計(jì)算和比較時(shí)間。例如:
SELECT UNIX_TIMESTAMP('2021-05-03 10:30:59'); -- 返回時(shí)間戳,單位為秒
在使用MySQL存儲(chǔ)時(shí)間類型的數(shù)據(jù)時(shí),也需要注意時(shí)區(qū)的設(shè)置。默認(rèn)情況下,MySQL使用服務(wù)器的本地時(shí)區(qū),可以使用SET time_zone語句進(jìn)行設(shè)置。
SET time_zone = 'Asia/Shanghai'; -- 設(shè)置時(shí)區(qū)為上海
總之,MySQL時(shí)間類型是處理時(shí)間相關(guān)數(shù)據(jù)的重要數(shù)據(jù)類型,掌握其使用方法和注意事項(xiàng)可以更好地操作數(shù)據(jù)庫。