MySQL是一個(gè)開(kāi)源的,輕量級(jí)的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)。在MySQL中,日期和時(shí)間值可以存儲(chǔ)在DATE,TIME,DATETIME,TIMESTAMP和YEAR數(shù)據(jù)類(lèi)型中。這些數(shù)據(jù)類(lèi)型中的每一個(gè)都有其特定的最小和最大值,格式和長(zhǎng)度。
在MySQL中,TIME和YEAR數(shù)據(jù)類(lèi)型的長(zhǎng)度是固定的。TIME數(shù)據(jù)類(lèi)型需要 3 個(gè)字節(jié),YEAR數(shù)據(jù)類(lèi)型需要 1 個(gè)字節(jié)。而DATE,DATETIME和TIMESTAMP數(shù)據(jù)類(lèi)型是可變長(zhǎng)度的。
DATE數(shù)據(jù)類(lèi)型存儲(chǔ)日期值,長(zhǎng)度為3個(gè)字節(jié),范圍為 '1000-01-01' 到 '9999-12-31'。
CREATE TABLE `example` ( `id` int(11) NOT NULL AUTO_INCREMENT, `date` date DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
DATETIME數(shù)據(jù)類(lèi)型存儲(chǔ)日期和時(shí)間值,長(zhǎng)度為8個(gè)字節(jié),范圍為 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'。
CREATE TABLE `example` ( `id` int(11) NOT NULL AUTO_INCREMENT, `datetime` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
TIMESTAMP數(shù)據(jù)類(lèi)型存儲(chǔ)日期和時(shí)間值,長(zhǎng)度為4個(gè)字節(jié),范圍為 '1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC。 TIMESTAMP數(shù)據(jù)類(lèi)型也可以被設(shè)置為自動(dòng)更新,在每次記錄插入或更新時(shí)自動(dòng)更新為當(dāng)前時(shí)間。
CREATE TABLE `example` ( `id` int(11) NOT NULL AUTO_INCREMENT, `timestamp` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
總之,熟悉MySQL時(shí)間類(lèi)型的長(zhǎng)度和范圍是數(shù)據(jù)庫(kù)設(shè)計(jì)者和開(kāi)發(fā)人員的必備技能之一。