MySQL 8.0 中引入了一些新的日期類型,包括 TIME(微秒精度)、DATETIME(微秒精度)、TIMESTAMP (JST(日本標準時間)和微秒精度) 和 YEAR(4位和2位數字)。這些新類型提供了更高的靈活性和精度來處理日期時間數據。
-- 示例代碼:創建一個包含日期類型的表格 CREATE TABLE product ( id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(255) NOT NULL, price DECIMAL(10, 2) NOT NULL, created_at TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP(6), updated_at DATETIME(6) DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), expired_at DATE NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
在上面的代碼中,可以看到我們使用了新的日期類型: TIMESTAMP 和 DATETIME。TIMESTAMP 包括 JST 時間和微秒精度,而 DATETIME 則包括微秒精度。我們還為這些列添加了 DEFAULT 和 ON UPDATE 屬性,這意味著這些列將自動處理時間戳。
下面是如何使用 YEAR 類型的代碼:
-- 示例代碼:使用 YEAR 類型 CREATE TABLE employee ( id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(255) NOT NULL, birth_year YEAR(4) NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
在一些應用中,我們只需要年份而不是完整的日期時間,這時候 YEAR 類型就非常有用了。在上面的代碼中,我們創建了一個包含 YEAR 類型的表格,并為 birth_year 添加了 NOT NULL 約束。
總之,MySQL 8.0 的新日期類型為我們提供了更高的靈活性和精度,能夠在處理日期時間方面更加準確和方便。