首頁  >  文章  >  資料庫  >  mysql中時間類型有哪些

mysql中時間類型有哪些

WBOY
WBOY轉載
2023-06-01 10:19:051481瀏覽
時間類型的選用

時間欄位類型可以選用datetime和timestamp,下面用一張表格展示下二者的差異:

mysql中時間類型有哪些

##timestamp翻譯為漢語即”時間戳”,它是當前時間到Unix元年(1970 年1 月1 日0 時0 分0 秒)的秒數,佔用4個字節,而且是以UTC的格式儲存,它會自動檢索目前時區並進行轉換。 datetime以8個位元組儲存,不會進行時區的檢索。也就是說,對於timestamp來說,如果儲存時的時區和檢索時的時區不一樣,那麼拿出來的資料也不一樣。對datetime來說,存什麼拿到的是什麼。下面給出幾個常見案例及選擇建議。

  • 根據儲存範圍來選取,例如生產時間,保質期等時間建議選取datetime,因為datetime能儲存的範圍更廣。

  • 記錄本行資料的插入時間和修改時間建議使用timestamp。

  • 和時區相關的時間欄位選用timestamp。

  • 如果只是想表示年、日期、時間的還可以使用 year、 date、 time,它們分別佔據 1、3、3 位元組,而datetime就是它們的集合。

如果timestamp欄位經常用於查詢,我們也可以使用MySQL內建的函數

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中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除