MySQL 中 DATE、DATETIME 和 TIMESTAMP 的區別

MySQL 中 DATE、DATETIME 和 TIMESTAMP 的區別

在 MySQL 中,DATE、DATETIME 和 TIMESTAMP 都是用于存儲日期和時間的數據類型,但它們在格式、范圍、存儲大小、時區處理和功能上存在顯著差異。以下將逐步對比這些區別,幫助您根據實際需求選擇合適的數據類型。

1. 定義和基本用途
  • DATE:僅存儲日期部分(年、月、日),不包括時間信息。適用于只需要記錄日期的場景,如生日、事件日期。
  • DATETIME:存儲日期和時間(年、月、日、時、分、秒)。適用于需要精確時間點的場景,如訂單創建時間、日志記錄。
  • TIMESTAMP:也存儲日期和時間,但與時區相關。它基于 Unix 時間戳(從 ‘1970-01-01 00:00:00’ UTC 開始的秒數),并自動進行時區轉換。適用于需要自動更新或國際化處理的場景,如用戶登錄時間。
2. 格式和有效范圍
  • DATE
    • 格式:YYYY-MM-DD。
    • 范圍:‘1000-01-01’ 到 ‘9999-12-31’。
    • 示例:2023-10-05
  • DATETIME
    • 格式:YYYY-MM-DD HH:MM:SS。
    • 范圍:‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’。
    • 示例:2023-10-05 14:30:00'
  • TIMESTAMP
    • 格式:YYYY-MM-DD HH:MM:SS,但在存儲時轉換為 UTC 時間。
    • 范圍:‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-19 03:14:07’ UTC(由于 4 字節存儲限制,稱為“2038 年問題”)。
    • 示例:2023-10-05 14:30:00'
3. 存儲大小
  • DATE:占用 3 字節。
  • DATETIME:占用 8 字節(在 MySQL 5.6.4 及之后版本中占用5字節)。
  • TIMESTAMP:占用 4 字節。

存儲大小影響性能和空間效率:TIMESTAMP 更緊湊,但范圍較小;DATETIME 范圍更大但占用更多空間;DATE 適用于純日期場景。

4. 時區處理
  • DATEDATETIME:存儲為字面值,不進行時區轉換。插入和檢索時值保持不變(例如,插入 ‘2023-10-05 14:30:00’ 會原樣存儲)。
  • TIMESTAMP:存儲時轉換為 UTC 時間,檢索時根據 MySQL 服務器的時區設置或會話時區轉換回本地時間。例如,如果服務器時區為 UTC+8,插入 ‘2023-10-05 14:30:00’ 會存儲為 UTC 時間 ‘2023-10-05 06:30:00’,檢索時再轉換回 ‘2023-10-05 14:30:00’。
5. 自動更新功能
  • TIMESTAMP:支持自動更新特性。可以在表定義中設置 DEFAULT CURRENT_TIMESTAMPON UPDATE CURRENT_TIMESTAMP,使其在插入或更新時自動設置為當前時間(例如,用于記錄最后修改時間)。
  • DATETIME:在 MySQL 5.6.5 及之后版本也支持自動更新(如 DEFAULT CURRENT_TIMESTAMP),但 TIMESTAMP 更常用且兼容性好。
  • DATE:不支持自動更新。
6. 使用場景建議
  • 使用 DATE 當:只關心日期,如員工入職日期、活動日期。
  • 使用 DATETIME 當:需要完整日期和時間,且范圍較大(超過 2038 年)或不需要時區轉換,如歷史數據記錄。
  • 使用 TIMESTAMP 當:需要自動更新時間、處理時區敏感數據或節省存儲空間,如用戶會話跟蹤、國際化應用。
總結關鍵區別
特性DATEDATETIMETIMESTAMP
存儲內容僅日期 (YYYY-MM-DD)日期和時間 (YYYY-MM-DD HH:MM:SS)日期和時間 (YYYY-MM-DD HH:MM:SS)
范圍1000-01-01 到 9999-12-311000-01-01 00:00:00 到 9999-12-31 23:59:591970-01-01 00:00:01 UTC 到 2038-01-19 03:14:07 UTC
存儲大小3 字節8 字節 (5字節)4 字節
時區處理無轉換無轉換存儲為 UTC,檢索時轉換
自動更新不支持支持(5.6.5+)支持

在實際應用中,選擇數據類型時需考慮數據范圍、時區需求和存儲效率。例如,對于用戶注冊時間,優先使用 TIMESTAMP 以利用自動更新;對于長期歷史數據,DATETIME 更可靠。建議參考 MySQL
官方文檔測試具體版本行為。

其他時間字段

  1. TIME

    • 存儲內容:時間(時分秒)
    • 格式HH:MM:SS
    • 范圍-838:59:59838:59:59(可表示時間間隔)
    • 示例14:30:45-02:30:00(表示負時間間隔)
  2. YEAR

    • 存儲內容:年份
    • 格式YYYY(4 位)或 YY(2 位,已棄用)
    • 范圍19012155
    • 示例2023
  3. 微秒支持(MySQL 5.6.4+)

    • 通過附加精度參數實現(如 DATETIME(3) 存儲毫秒)
    • 格式:YYYY-MM-DD HH:MM:SS.ffffff
    • 示例:2023-10-05 14:30:45.123456

選擇建議

  • 只需日期 → DATE
  • 需完整時間且不涉及時區 → DATETIME
  • 需自動時區轉換或記錄更新時間 → TIMESTAMP
  • 僅需時間或時間間隔 → TIME
  • 僅需年份 → YEAR

示例:

-- 創建包含三種類型的表
CREATE TABLE example (date_col DATE comment '創建日期',time_col TIME comment '時間',year_col YEAR comment '年份',datetime_col DATETIME DEFAULT CURRENT_TIMESTAMP comment '創建時間',timestamp_col TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP comment '時間戳'
);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/88616.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/88616.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/88616.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

面試 — 預進行 — 面試前準備

好記憶不如爛筆頭,能記下點東西,就記下點,有時間拿出來看看,也會發覺不一樣的感受. 書接上回,雖然我已經闡述過一下,詳見面試 — 預準備 — 面試前準備攻略,但是我還是想再說一次,畢…

“易問易視”——讓數據分析像聊天一樣簡單

一、項目簡介 “易問易視”通過自然語言理解和大語言模型技術,將用戶的中文查詢自動轉化為數據處理指令,實現無代碼的數據檢索與圖表生成。你只要在大屏上輸入一句話,比如“2024年每月有多少人出境”,它就能自動看懂你要查的時間…

【入門級-基礎知識與編程環境:9、使用圖形界面新建、復制、刪除、移動文件或目錄】

在圖形界面(GUI)中操作文件或目錄(新建、復制、刪除、移動)是最直觀的方式,不同操作系統(Windows、macOS、Linux)的操作類似但略有差異。以下是詳細步驟: Windows 系統 新建文件/目…

百度中年危機:一場艱難的突圍戰

自互聯網萌芽階段起,搜索引擎便在數字世界中扮演著“指南針”的角色,引領用戶在海量信息洪流中精準定位所需內容。傳統搜索引擎依托關鍵詞匹配技術,構建起大規模的信息索引系統,這一模式曾助力百度等企業攀上行業高峰。 然而&…

Vue3解析Spring Boot ResponseEntity

在 Vue 3 中解析 Spring Boot 返回的 ResponseEntity 主要涉及處理 HTTP 響應。Spring Boot 的 ResponseEntity 通常包含狀態碼、響應頭和響應體(JSON 數據為主)。以下是詳細步驟和代碼示例: 解決方案步驟: 發送 HTTP 請求&#x…

深入掌握MyBatis:核心解析

一、MyBatis核心架構解析 1. 什么是MyBatis? MyBatis是一款半自動ORM框架,它通過XML或注解將SQL與Java對象映射,提供比Hibernate更靈活的SQL控制能力,同時消除了傳統JDBC的樣板代碼。 2. 核心組件關系圖 3. 核心組件職責 組件…

通達信 超級趨勢強悍 幅圖指標公式

指標用法說明 核心邏輯 該指標通過結合價格趨勢、波動率和支撐阻力分析來識別潛在的買入機會和趨勢轉折點。 主要組成部分 趨勢判斷: 使用19日和7日EMA的交叉判斷趨勢方向 股道_Q_3:19日EMA上穿7日EMA(看漲信號) 股道_Q_4:7日EMA上穿19日EMA(看跌信號) 支撐阻力線: …

knowledge-vue2項目(Electron)打包為PC桌面應用程序

1.使用nvm管理node版本 不同的項目開發需要的node版本環境不一樣,所以需要使用nvm進行版本管理。 關鍵命令: (1)檢查nvm版本號是否安裝成功 nvm -v (2)檢查所有node版本號 nvm ls (3)安裝指定node版…

k8s集群1.18.20更換節點ip地址段需求操作

前期已經部署好一套k8s集群1.18.20版本,1個master,2個node節點,使用節點地址段為192.168.66.0/24,現在因測試任務需要臨時調整到192.168.40.0/24,以下記錄一下相關操作步驟,請供參考學習。 一、環境準備 …

1-BaoStock股票數據下載

一、程序功能 程序基于 baostock 接口實現 A 股股票數據的獲取與存儲,主要功能包括股票列表更新、數據下載與處理。程序通過三個核心函數協同工作: update_stk_list(dateNone):獲取指定日期的 A 股股票列表,默認使用當日。自動處…

【C/C++】無鎖隊列實現與內存回收機制:Hazard Pointer 深度解析

無鎖隊列實現與內存回收機制:Hazard Pointer 深度解析 在并發系統中,為了提升性能和避免鎖競爭,我們常常追求 lock-free 數據結構。但當你實現完一個無鎖隊列后,會發現一個嚴重問題: 內存什么時候釋放?怎樣…

Scrapy進階封裝(第三階段:多管道封裝,多文件存儲)

1.yield返回數據的原理? 為什么要用yield返回數據給管道? 遍歷這個函數的返回值的時候,挨個把數據讀到內存,不會造成內存的瞬間占用過高,Python3中的range和python2中的xrange同理。scrapy是異步爬取,所以通過yield…

證照大師 MAX 4.0安裝與基礎功能體驗(附流程演示)

軟件介紹 證照大師 MAX 4.0是一款功能強大的證件照制作軟件,專為滿足用戶不同場景下的證件照需求而設計。它整合了專業的照片處理技術和智能化的操作系統,提供了自動摳圖、尺寸調整、美顏處理、批量處理以及格式轉換等多種功能。該軟件用戶界面簡潔明快…

RK3568-適配mipi屏幕觸摸和顯示

1.1 適配mipi屏幕觸摸 gt9xx_lvds: gt9xx-lvds5d {compatible "goodix,gt9xx";reg <0x5d>;pinctrl-names "default";pinctrl-0 <&touch_gpio>;touch-gpio <&gpio1 RK_PA4 IRQ_TYPE_LEVEL_LOW>;reset-gpio <&gpio1…

ICME 2025音頻編碼器能力挑戰賽Workshop即將舉辦!

IEEE International Conference on Multimedia and Expo 2025&#xff08;ICME 2025&#xff09; 將于 6月30日至7月4日在法國南特舉行。作為全球多媒體領域的頂級會議之一&#xff0c;ICME 2025 匯聚全球頂尖學者與產業專家&#xff0c;聚焦人工智能驅動的多媒體技術&#xff…

物奇微WQ5007A上手指南

一、獲取SDK 需要與物奇微電子股份有限公司簽訂NDA協議才會提供SDK。 二、搭建開發環境 SDK里包含了編譯工具、開發文檔、源碼。在windows系統下搭建開發環境&#xff1a; 1、安裝交叉編譯工具 將\wuqi_sdk\tools\riscv64-unknown-elf-gcc-10.2.0-windows.zip文件解壓到任…

[論文閱讀] 人工智能 + 軟件工程 | LLM在單元測試中的應用:系統性綜述與未來展望

LLM在單元測試中的應用&#xff1a;系統性綜述與未來展望 論文信息 arXiv:2506.15227 Large Language Models for Unit Testing: A Systematic Literature Review Quanjun Zhang, Chunrong Fang, Siqi Gu, Ye Shang, Zhenyu Chen, Liang Xiao Subjects: Software Engineering …

數據重疊對CLIP零樣本能力影響CLIP論文圖17筆記

這兩張圖表&#xff08;圖17左、右圖&#xff09;是CLIP論文中驗證“數據重疊是否影響CLIP零樣本能力”的關鍵證據&#xff0c;核心是通過**“數據重疊分析”排除CLIP“作弊”嫌疑**&#xff08;即CLIP的高零樣本準確率是否因為“見過測試集圖像”&#xff09;。下面用“先看懂…

996引擎-假人系統

996引擎-假人系統 lua 假人問題添加假人名字列表打開M2設置假人參考資料 lua 假人問題 添加假人名字列表 假人名字列表 Mir200\Envir\DummyNameList.txt 打開M2設置假人 【選項】>【假人設置】 參考資料 假人系統

Rk3568驅動開發_Key驅動_13

設備樹配置 key{compatible "alientek,key";pinctrl-0 <&key_gpio>;pinctrl-names "alientek,key";key-gpio <&gpio3 RK_PC5 GPIO_ACTIVE_HIGH>;status "okay";};配置信息方便后面直接引用&#xff1a; // Narnat 2025…