MySQL數據類型--日期時間

来源:http://www.cnblogs.com/phpstudy2015-6/archive/2017/01/18/6291458.html
-Advertisement-
Play Games

一、博客前言 自接觸學習MySQL已有一段時間了,對於MySQL的基礎知識還是有一定的瞭解的。在這一路學習過來,每次不管看書還是網上看的資料,對於MySQL數據類型中的時間日期類型總是一掃而過,不曾停下來認認真真的研究學習。最近在圖書館借了一本關於MysQL的書籍,打算全面的學習研究一遍。 在之前, ...


一、博客前言

  自接觸學習MySQL已有一段時間了,對於MySQL的基礎知識還是有一定的瞭解的。在這一路學習過來,每次不管看書還是網上看的資料,對於MySQL數據類型中的時間日期類型總是一掃而過,不曾停下來認認真真的研究學習。最近在圖書館借了一本關於MysQL的書籍,打算全面的學習研究一遍。

  在之前,我對於時間日期數據類型不怎麼感冒,也沒怎麼用過這一類型。在我的做項目里用到存貯時間的數據,我都是採用int整型數據類型來存儲,即是存儲時間戳。但是在後面學習MySQL優化的時候,就有一個原則就是存儲數據時應採用最小占用空間的數據類型。int類型是4個位元組,TIMESTAMP也是4個位元組,但是在需要使用日期時,時間戳還需要進一步轉換,而TIMESTAMP類型數據就不需要了。

  所以說認真學習瞭解每一個知識點是必要的!

二、時間日期數據類型總概況

   MySQL中有多種表示時間日期的數據類型,主要有YEAR、TIME、DATE、DATETIME、TIMESTAMP等。每一種數據類型都有存儲的時間日期格式、以及取值範圍,因此在使用時間日期數據類型的時候需要選取最佳的數據類型。

下圖列出了幾種數據類型:

三、細講

1、YEAR

  year用於存儲年,存儲時只需要一個位元組,插入數據時可以使用各種格式指定YEAR值。

常見的插入格式解析:

  a、四位字元串或者數字格式,範圍為“1901”~“2155”,多少即為多少。

  b、兩位字元串格式,範圍為“00”~“99”,"00"~"69"被轉化為20**(例如:“16”轉化為“2016”),“70”~“99”被轉化為19**

  c、兩位數字格式,範圍為1~99,1~69被轉化為20**(例如:1轉化為2001),70~99被轉化為19**

2、TIME

  time用於存儲時間信息,存儲時需要三個位元組。從上圖中可以瞭解到time的存儲格式,還有數據範圍。其中HH小時大於一天的24小時,可以為八百多的數字。這是因為這個類型不僅僅可以用於存儲一天的某個時間還可以記錄一段時間的間隔。所以小時就24小時。插入數據可以有多種格式。

常見插入格式解析:

  a、"D HH:MM:SS"格式字元串格式。還可以使用非嚴格語法插入,例如“HH:MM:SS”、"D HH:SS"、“MM:SS”、"D HH"、”SS“(D表示天,取值範圍為0~34)。在存入資料庫是D將會被轉換為D*24+HH,最終將當做小時進行入庫存儲。

  b、”HHMMSS“沒間隔的字元串格式或者HHMMSS沒間隔的數字格式,非嚴格語法插入可以為,MMSS、SS、”MMSS“等等。要註意的是:1、這兩種插入格式採用非嚴格語法的時候(即為時分秒不完整,只有時分等等),最右邊的數據將預設為秒數,例如插入2318時,最終入庫為002318。 2、分鐘與秒數的數據要有實際意義,假若·MM為65超過59,那麼將會發生錯誤。

3、DATE

  date用於存儲日期,沒有時間部分,存儲時需要三個位元組。插入數據可以有多種格式。

常見插入格式解析:

  a、”YYYY-MM-DD“、"YYYYMMDD"。

  b、”YY-MM-DD“、”YYMMDD“,以兩位數字來插入年份,這裡主要區別”00~69”與“70~99”,前者表示20**,後者表示19**。

  c、數字格式YY-MM-DD、YYMMDD,兩位數字插入年份,區別於上面一樣。

  d、使用函數插入,CURRENT_DATE()、NOW()

4、DATETIME

  datetime用於存儲日期時間數據,存儲時需要八個位元組。插入數據可以有多種格式。

常見插入格式解析:

  a、”YYYY-MM-DD HH:MM:SS“、"YYYYMMDDHHMMSS",最終插入資料庫都為2017-01-17 23:55:59格式。

  b、”YY-MM-DD HH:MM:SS“、"YYMMDDHHMMSS",兩位數字插入年份,主要區分“00~69”與“70~99”,區別於上面一樣。

  c、數字格式插入,YYYYMMDDHHMMSS、YYMMDDHHMMSS,兩位數字插入年份問題與上述一致。

5、TIMESTAMP

  timestamp用於存儲日期時間數據,與datetime存儲數據格式一樣,二者主要區別在於取值範圍。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"(UTC:Coordinated Universal Time 世界時間標準) 。插入格式也有多種。

常見插入格式解析:

  與DATETIME一致,可以參考上面。

四、小結

  瞭解MySQL的日期時間數據類型對於選取一種適合存儲類型是很有必要的。假若只有存儲年份可以選取YEAR、僅存儲時間可以選擇TIME、又或者需要存儲完整日期時間,那麼可以根據實際情況選取DATATIME或者TIMESTAMP數據類型。

 

(以上是自己的一些見解,若有不足或者錯誤的地方請各位指出)

作者:壹葉隨風

聲明:本博客文章為原創,只代表本人在工作學習中某一時間內總結的觀點或結論。轉載時請在文章頁面明顯位置給出原文鏈接。


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

-Advertisement-
Play Games
更多相關文章
  • Apache Flink是一個面向分散式數據流處理和批量數據處理的開源計算平臺,它能夠基於同一個Flink運行時,提供支持流處理和批處理兩種類型應用的功能。 現有的開源計算方案,會把流處理和批處理作為兩種不同的應用類型,因為它們所提供的SLA(Service Level Aggreement)是完全 ...
  • 編輯 用戶: SYSTEM 1.1, 1.2, 2.1, 2.2, 3.1, 3.2, 4.1, 4.2, 5.1, 5.2, 6.1, 6.2, 7.1, 7.2, 8.1, ...
  • 執行計劃顯示SQL執行的開銷 工具→ SQL Server Profiler : SQL Server 分析器,監視系統調用的SQL Server查詢 Top查詢 -- Top Percent 選擇百分比 SELECT top 30 percent * FROM [SchoolDB].[dbo].[... ...
  • 前言 最近連續接觸了4個OA系統,均存在著不同的性能問題,本文記述對某移動OA系統的優化全過程,讓看官們對資料庫優化流程有一個瞭解,並揭開隱式轉換這無情殺手的神秘面紗。 本文使用的工具:SQL專家雲平臺專業體檢工具 :www.zhuancloud.com 系統情況 硬體配置 軟體情況 資料庫情況 系 ...
  • 遇到的問題 1、最初階段 系統中做了一個監控功能,用於記錄所有的請求數據,數據插入頻繁,量非常大,比如一天1000萬條。考慮到數據插入的效率,就使用記憶體KV緩存來保存。寫入過程是在接收到請求後放入到線程池中,然後線程池非同步處理後寫入。到這問題基本上沒什麼事情。 2、新的需求 後面數據保存了,就需要在 ...
  • httpd yum install httpd -y systemctl status httpd systemctl start httpd systemctl stop firewalld Mariadb yum install mariadb-server mariadb-client -y ...
  • SQL Server 其實從SQL Server 2005開始,也提供了類似ORACLE中固定執行計劃的功能,只是好像很少人使用這個功能。當然在SQL Server中不叫"固定執行計劃"這個概念,而是叫"執行計劃指南"(Plan Guide 很多翻譯是計劃指南,個人覺得執行計劃指南稍好一些)。當然兩... ...
  • 最近在做oracle相關的項目,剛接觸oracle,與sqlserver語法上還是有區別的 sqlserver : 示例:FX+當前年月日+00001 如下圖流水號實力所示 原理: 首先 'FX'是固定的,獲取當前年月日方法在sqlserver中分別是: 1.年:YEAR(GETDATE()) 2. ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...