MySQL 時間類型 DATE、DATETIME和TIMESTAMP

来源:https://www.cnblogs.com/xuliuzai/archive/2019/05/21/10901425.html
-Advertisement-
Play Games

1.DATE、DATETIME和TIMESTAMP 表達的時間範圍 2.DATETIME和TIMESTAMP 最大時間精確度 5.7 之後的版本(其實應該說5.6.5),在預設的秒精確度上,可以帶小數,最多帶6位小數,即可以精確到 microseconds (6 digits) precision。 ...


1.DATE、DATETIME和TIMESTAMP 表達的時間範圍

Type Range Remark
DATE '1000-01-01' to '9999-12-31' 只有日期部分,沒有時間部分
DATETIME '1000-01-01 00:00:00' to '9999-12-31 23:59:59' 時間格式為 YYYY-MM-DD hh:mm:ss,預設精確到秒
TIMESTAMP  '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07'UTC 預設精確到秒

2.DATETIME和TIMESTAMP 最大時間精確度

5.7 之後的版本(其實應該說5.6.5),在預設的秒精確度上,可以帶小數,最多帶6位小數,即可以精確到 microseconds (6 digits) precision。

Type  Range  Remark
DATETIME '1000-01-01 00:00:00.000000' to '9999-12-31 23:59:59.999999' 'YYYY-MM-DD hh:mm:ss[.fraction]'
TIMESTAMP '1970-01-01 00:00:01.000000' to '2038-01-19 03:14:07.999999' 'YYYY-MM-DD hh:mm:ss[.fraction]'

 

3.DATETIME和TIMESTAMP 區別

(1) 時間範圍不一樣,TIMESTAMP 要小很多 ,且最大範圍為2038-01-19 03:14:07.999999,到期也不遠了。

(2)對於TIMESTAMP,它把客戶端插入的時間從當前時區轉化為UTC(世界標準時間)進行存儲。查詢時,將其又轉化為客戶端當前時區進行返回。而對於DATETIME,不做任何改變,基本上是原樣輸入和輸出。

MySQL converts TIMESTAMP values from the current time zone to UTC for storage, and back from UTC to the current time zone for retrieval. (This does not occur for other types such as DATETIME.)
By default, the current time zone for each connection is the server's time. The time zone can be set on a per-connection basis.
As long as the time zone setting remains constant, you get back the same value you store. If you store a TIMESTAMP value, and then change the time zone and retrieve the value,
the retrieved value is different from the value you stored. This occurs because the same time zone was not used for conversion in both directions.
The current time zone is available as the value of the time_zone system variable.

 可能上面的幾句英文不好理解,我們舉個例子。

創建2張測試表:

 create table testtime(id int,hiredate timestamp);

 create table testtime1(id int,hiredate datetime);

向這兩個測試表中分別插入一筆測試數據

insert into testtime values(1,'20151208000000');

insert into testtime1 values(1,'20151208000000');

 

查看這種顯示的時區時間設置

查詢命令

 show variables like '%time_zone%'; 

 

上述“CST”指的是MySQL所在主機的系統時間,是中國標準時間的縮寫,China Standard Time UT+8:00

修改time_zone

 set time_zone='+0:00';

通過結果可以看出,testtime中返回的時間提前了8個小時,而testtime1中時間則不變。

 如果新建一個客戶端連接,這個時區的修改不影響新連接。

 

4.TIMESTAMP在新舊版本上的重大區別

TIMESTAMP 在mysql 5.6.5之後,TIMESTAMP(fraction)中的fraction代表的是小數位數,即預設秒,以秒為單位的小數點位數。 up to microseconds (6 digits) precision,最大為6.

超過6則報錯:

ERROR 1426 (42000): Too-big precision 7 specified for 'hiredate'. Maximum is 6.

在比較久的版本上,這個數字就代表不同的意義,以下內容為舊版本的關於TIMESTAMP的知識。

TIMESTAMP(fraction)中fraction值顯示尺寸的格式如下表所示:

列類型 顯示格式
TIMESTAMP(14)  YYYYMMDDHHMMSS
TIMESTAMP(12)  YYMMDDHHMMSS
TIMESTAMP(10)  YYMMDDHHMM
TIMESTAMP(8)  YYYYMMDD
TIMESTAMP(6)  YYMMDD
TIMESTAMP(4)  YYMM
TIMESTAMP(2)  YY

就版本中“完整”TIMESTAMP格式是14位,但TIMESTAMP列也可以用更短的顯示尺寸,創造最常見的顯示尺寸是6、8、12、和14。

在創建表時可以指定一個任意的顯示尺寸,但是定義列長為0或比14大均會被強制定義為列長14。列長在從1~13範圍的奇數值尺寸均被強製為下一個更大的偶數。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 文章大綱 一、網路相關概述二、網路相關命令三、項目上線流程(必須掌握)四、學習資料下載五、參考文章 一、網路相關概述 1. 網路發展 1.1 信息傳遞遠古時期,人們就通過簡單的語言、壁畫等方式交換信息千百年來,人們一直在用語言、圖符、鐘鼓、煙火、竹簡、紙書等傳遞信息古代人的烽火狼煙、飛鴿傳信、 ...
  • 文章大綱 一、許可權概述二、許可權設置三、屬主與屬組設置四、擴展五、學習資料下載六、參考文章 一、許可權概述 總述:Linux系統一般將文件可存/取訪問的身份分為3個類別:owner、group、others,且3種身份各有read、write、execute等許可權。 1. 許可權介紹 什麼是許可權?在多用戶 ...
  • 文章大綱 一、設置主機名二、chkconfig三、ntp服務四、防火牆服務五、rpm管理(重點)六、cron/crontab計劃任務(重點)七、學習資料下載八、參考文章 自有服務,即不需要用戶獨立去安裝的軟體的服務,而是當系統安裝好之後就可以直接使用的服務(內置)。 一、設置主機名 回顧: ①臨時設 ...
  • linux系統因為備份、不同版本等問題,導致ECS Linux上存放有多個Nginx目錄,可以通過如下方法定位當前正在運行的Nginx的配置文件: 1. 查看nginx的PID,以常用的80埠為例: 2. 通過相應的進程ID(比如:4562)查詢當前運行的nginx路徑: 3. 獲取到nginx的 ...
  • 1.查看樹莓派系統掛載的儲存設備 使用工具查看系統識別到的硬碟設備,命令: /dev/sda 和 /dev/sdb 分別是兩塊硬碟。 2.修改硬碟分區 Linux和windows一樣,linux可以把一塊硬碟進行分區。 在使用 fdisk工具可以看到硬碟的詳細信息,和對應的分區表信息。我們對硬碟進行 ...
  • 鑒於上節篇幅以安裝為主,因此對於調用mysql所需要使用的“命令”只是略微提及。隨之而來就會帶給讀者諸多不解了,因為你會思考,這串長長的字元到底有什麼特殊的含義呢?聰明的你可能早就抱著好奇心去“擺渡”一下了。而答案不過是在連接mysql伺服器時,應當使用的一種方式——即,身份驗證而已。另外一個情境是 ...
  • HBase安裝配置 ①下載壓縮包(選擇與自己安裝的Hadoop版本的相容版本,見後面附錄) 官網下載地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/stable/ 選擇穩定版hbase-1.4.9-bin.tar.gz,在Windows裡面下 ...
  • 查詢用戶狀態col username for a20col account_status for a20select username,account_status,LOCK_DATE,EXPIRY_DATE from user_users;PROFILE RESOURCE_NAME RESOURC ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...