時間欄位類型可以選用datetime和timestamp,下面用一張表格展示下二者的差異:
##timestamp翻譯為漢語即”時間戳”,它是當前時間到Unix元年(1970 年1 月1 日0 時0 分0 秒)的秒數,佔用4個字節,而且是以UTC的格式儲存,它會自動檢索目前時區並進行轉換。 datetime以8個位元組儲存,不會進行時區的檢索。也就是說,對於timestamp來說,如果儲存時的時區和檢索時的時區不一樣,那麼拿出來的資料也不一樣。對datetime來說,存什麼拿到的是什麼。下面給出幾個常見案例及選擇建議。FROM_UNIXTIME()、
UNIX_TIMESTAMP(),將日期和時間戳記數字來回轉換,轉換後可以用INT UNSIGNED 儲存時間,數字是連續的,佔用空間更小,並且可以使用索引提升查詢效能。以下給出示範建表語句及時間戳相關轉換SQL:
CREATE TABLE `tb_time` ( `increment_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键', `col1` datetime NOT NULL DEFAULT '2020-10-01 00:00:00' COMMENT '到期时间', `unix_createtime` int unsigned NOT NULL COMMENT '创建时间戳', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`increment_id`), KEY `idx_unix_createtime` (`unix_createtime`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='time测试表'; # 插入数据 insert into tb_time (unix_createtime,create_time) values (UNIX_TIMESTAMP(now()),now()); # 时间戳数字与时间相互转换 select UNIX_TIMESTAMP('2020-05-06 00:00:00') select FROM_UNIXTIME(1588694400)
以上是mysql中時間類型有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!