一般情況下,我們在設計數據庫的時候,日期時間類型的字段都會保存年月日時分秒的完整時間,但在某些業務場景下,我們只需要保存年月日,而不需要保存具體的時分秒。
MySQL 中提供了 DATE 類型的數據類型,它可以精確到年月日,但不包括時間。使用 DATE 類型時,我們只需要在建表的時候指定字段類型為 DATE 類型即可:
CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(30) NOT NULL DEFAULT '', `birthday` date NOT NULL DEFAULT '1970-01-01', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
在上面的代碼中,birthday 字段的類型為 DATE,并設置了默認值為 1970-01-01。
當我們插入數據時,可以只插入年月日,如:
INSERT INTO `user` (`name`, `birthday`) VALUES ('Tom', '1990-01-01');
查詢數據時,MySQL 會自動將時間設置為 00:00:00:
SELECT `name`, `birthday` FROM `user`;
我們也可以使用 DATE_FORMAT 函數將日期格式化成我們需要的格式:
SELECT `name`, DATE_FORMAT(`birthday`, '%Y-%m-%d') AS `birthday` FROM `user`;
總之,在某些場景下,我們只需要保存年月日的數據,可以使用 MySQL 中的 DATE 數據類型來實現。需要注意的是,不同的數據庫可能會有差異。