mysql中TIMESTAMP 和DATETIME數據類型的區別

在MySQL中,TIMESTAMPDATETIME都用于表示日期和時間,但是它們之間存在一些關鍵區別。下面我們通過幾個關鍵點來詳細了解這兩種數據類型的使用:

存儲范圍

  • TIMESTAMP類型的存儲范圍從'1970-01-01 00:00:01' UTC到'2038-01-19 03:14:07' UTC。
  • DATETIME類型的存儲范圍更為廣泛,從'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。

例如:

CREATE TABLE example (a TIMESTAMP, b DATETIME
);

此時如果嘗試插入超出范圍的日期,數據將無法輸入:

INSERT INTO example VALUES ('1969-12-31 23:59:59', '1000-01-01 00:00:00');  -- 錯誤,TIMESTAMP超出范圍

存儲空間

  • TIMESTAMP類型只需要占用4個字節的存儲空間。
  • DATETIME類型需要占用8個字節的存儲空間。

時區敏感

TIMESTAMP數據類型是與時區相關的,它在存儲時會自動轉換為UTC時間,讀取時又會被自動轉換回當前MySQL服務器的時區。因此,如果你在一個時區寫入一個TIMESTAMP,然后在另一個時區讀取,讀出的值可能會與你最初寫入的值不同。

DATETIME數據類型則完全忽略時區,直接保存提交的日期時間值,無論MySQL服務器的時區設置為何。

例如:

SET time_zone='+00:00';
INSERT INTO example VALUES (NOW(), NOW());  -- 插入當前UTC時間SET time_zone='+08:00';
SELECT * FROM example;  -- 讀取數據

如果你在UTC+0時區插入當前時間,然后在UTC+8時區讀取,那么TIMESTAMP列將展示為8小時后的時間,而DATETIME列仍為原始時間。

默認值和自動更新

  • TIMESTAMP字段具有自動設置默認值和自動更新的特性。當定義為DEFAULT CURRENT_TIMESTAMPON UPDATE CURRENT_TIMESTAMP時,這個字段將自動賦予當前時間戳作為默認值或當其他字段更新時自動更新。

  • DATETIME字段在MySQL 5.6.5及以上版本中也支持自動默認值和自動更新,但需要顯式聲明。

例如:

CREATE TABLE example (a TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, b DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

這里,兩者都被設置為默認當前時間戳,并且在記錄更新時自動更新。但在早期的MySQL版本中,DATETIME并不支持這種行為。

總結起來,選擇TIMESTAMP還是DATETIME主要取決于你的具體需求,包括時間范圍、存儲空間、時區敏感性以及默認值和自動更新功能。

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

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

相關文章

Django之importlib模塊

【1】介紹 import importlib importlib模塊是Python中用于動態加載和導入模塊的內置模塊 它提供了一組函數和類,使得我們可以在運行時根據需要加載模塊,并且可以對已導入的模塊進行操作和管理 【2】importlib模塊中的import_module方法 【2.1】導入模塊…

無需API開發,錢方QFPay連接營銷系統和廣告推廣平臺

隨著電子商務市場的不斷發展,企業需要集成各種業務系統,以提高業務效率和降低運營成本。錢方QFPay提供了一種創新的解決方案,幫助企業實現系統間的連接和集成,無需進行復雜的API開發。除了電商系統和客服系統,錢方還能…

武漢光庭公司地圖引擎開發工程師24秋招三場面試完整流程

本文介紹2024屆秋招中,武漢光庭信息技術股份有限公司的智能駕駛地圖引擎開發工程師崗位一面、二面、三面的面試基本情況、提問問題等。 10月投遞了武漢光庭信息技術股份有限公司的智能駕駛地圖引擎開發工程師崗位,暫時并不清楚所在的部門。目前完成了全部…

mysql:修改密碼的幾種方式

背景 當我們 brew install mysql 新安裝 mysql 的時候,是沒有密碼的,我們可以直接通過 mysql -u root 連接上。但是密碼還是要設置的,一是為了安全,二是有些數據庫軟件如 Sequel 連接都是必須要密碼的,接下來我們來看…

電磁建模的分布式并行計算技術

本文提出了一種新的分布式并行電磁建模技術,以加快電磁結構的神經網絡建模過程。現有的電磁建模技術通常需要反復改變微波器件的參數,驅動電磁模擬器以獲得足夠的訓練和測試樣本。隨著電磁建模問題復雜性的增加,由于單臺計算機的性能有限&…

DP好題總結

LCIS最長公共上升子序列 題解:https://blog.csdn.net/weixin_50624971/article/details/116892236 概括: 決策優化DP 考慮LCS可以寫成 O ( n 4 ) O(n^4) O(n4) 的如果我們把狀態設為 f [ i , j ] f[i,j] f[i,j] 表示考慮到 a [ i ] , b [ j ] a[i]…

機器學習【00】pycharm使用遠程服務器

我們使用conda在服務器上創建虛擬環境,遠程使用pycharm進行編程 pycharm版本2023.1.3 一.首先在服務器上創建虛擬環境 注:anaconda的安裝可以參考ubuntu系統miniconda的安裝 conda create --name tac python3.7二.pycharm 連接 點擊add interpreter …

查企業聯系電話的方法

對于銷售來說,獲取準確、全面的企業聯系方式,無疑是開發客戶的基礎與保障,因為任憑能力再高,說服能力多強,沒有與客戶接觸的機會,這些都是無稽之談。但是大家都知道,道理都懂,但是要…

.yaml文件的簡介

文章目錄 YAML文件簡介YAML文件的示例 YAML文件簡介 YAML是一種人類可讀的數據序列化標準。它常被用于配置文件、數據交換格式、以及在一些編程語言中的數據結構描述。 YAML 文件的主要特點有如下四點: 可讀性:YAML 的語法結構簡潔明了,容…

報錯AttributeError: module ‘cv2‘ has no attribute ‘ximgproc‘

報錯AttributeError: module ‘cv2’ has no attribute ‘ximgproc’ 首先查看是否安裝opencv-contrib-python pip list | grep opencv顯示 opencv-contrib-python 4.4.0.46 opencv-python 4.8.1.78 opencv-pyt…

【2023.11.24】Mybatis基本連接語法學習?

基本配置 1.如果使用Maven管理項目&#xff0c;需要在pom.xml中配置依賴。 2.安裝Mybatis-3.5.7.jar包 3.進行XML配置&#xff1a;這里將文件命名為mybatis-config.xml 配置數據庫連接XML文件 <?xml version"1.0" encoding"UTF-8" ?> <!DO…

Crypto(10)BUUCTF-RSA3(共模攻擊)

一.共模攻擊的現實意義 好奇一個問題&#xff0c;即共模攻擊有什么現實意義&#xff1f; 發現也沒有什么現實意義&#xff0c;因為&#xff08;n,e&#xff09;是已知的&#xff0c;通常每個用戶的n是不同的&#xff0c;除非特殊情況吧 二.共模攻擊的數學原理&#xff1a; 通…

最重要的BI測試-適用于任何BI和分析平臺

為什么 BI 測試是答案 相信你的數據可視化是成功執行商業智能 (BI) 和分析項目的關鍵因素。我敢肯定&#xff0c;你遇到過以下情況&#xff1a;業務主管或業務用戶反饋說他們的分析看起來不對&#xff0c;他們的 KPI 看起來有問題&#xff0c;或者速度太慢而無法使用。要問自己…

SQL 通配符:用于模糊搜索和匹配的 SQL 關鍵技巧

SQL通配符字符 通配符字符用于替代字符串中的一個或多個字符。通配符字符與LIKE運算符一起使用。LIKE運算符用于在WHERE子句中搜索列中的指定模式。 示例 返回所有以字母 ‘a’ 開頭的客戶&#xff1a; SELECT * FROM Customers WHERE CustomerName LIKE a%;通配符字符 符…

5:kotlin 類(Classes )

kotlin支持面向對象編程&#xff0c;也有雷和對象的概念 要聲明一個類需要使用class關鍵字 class Customer屬性&#xff08;Properties&#xfeff;&#xff09; 可以在類名后邊添加()&#xff0c;在()里邊聲明屬性 class Contact(val id: Int, var email: String)聲明了不…

單片機、ARM、嵌入式開發、Android 底層開發有什么關系?

單片機、ARM、嵌入式開發、Android 底層開發有什么關系&#xff1f; 從我目前的見識來看&#xff1a; 單片機是個系統&#xff08;比如&#xff1a;51、AVR、PLC...&#xff09;&#xff0c;其中包含了去除了輸入輸出之外的運算器、控制器、存儲器&#xff0c;我們用程序可以非…

從Redis反序列化UserDetails對象異常后發現FastJson序列化的一些問題

最近在使用SpringSecurityJWT實現認證授權的時候&#xff0c;出現Redis在反序列化userDetails的異常。通過實踐發現&#xff0c;使用不同的序列化方法和不同的fastJson版本&#xff0c;異常信息各不相同。所以特地記錄了下來。 一、項目代碼 先來看看我項目中redis相關配置信息…

黑馬點評筆記 redis緩存三大問題解決

文章目錄 緩存問題緩存穿透問題的解決思路編碼解決商品查詢的緩存穿透問題 緩存雪崩問題及解決思路緩存擊穿問題及解決思路問題分析使用鎖來解決代碼實現 邏輯過期方案代碼實現 緩存問題 我們熟知的是用到緩存就會遇到緩存三大問題&#xff1a; 緩存穿透緩存擊穿緩存雪崩 接…

QOverload獲取重載的信號

QOverload獲取重載的信號 多個信號或者函數同名&#xff0c;但是不同參數&#xff0c;也就是存在重載 可以使用QOverload獲取指定的重載函數 QOverload<int>::of(&QComboBox::currentIndexChanged)上面的代碼就是用來獲取參數為int的那個函數

【Spring篇】JDK動態代理

目錄 什么是代理&#xff1f; 代理模式 動態代理 Java中常用的代理模式 問題來了&#xff0c;如何動態生成代理類&#xff1f; 動態代理底層實現 什么是代理&#xff1f; 顧名思義&#xff0c;代替某個對象去處理一些問題&#xff0c;謂之代理&#xff0c;那么何為動態&a…