1. 程式人生 > >從資料檔案看timestamp範圍限制

從資料檔案看timestamp範圍限制

  • 建立表:
mysql> desc test_timestamp1;
+-------+-----------+------+-----+---------+-------+
| Field | Type      | Null | Key | Default | Extra |
+-------+-----------+------+-----+---------+-------+
| time  | timestamp | YES  |     | NULL    |       |
+-------+-----------+------+-----+---------+-------+
  • 插入資料,並查詢,mysql官方文件解釋:timestamp的範圍:1970-01-01 00:00:01UTC~2038/01/19 3:14:07UTC,
  • 我們是東八區,所以我們的timestamp的範圍:1970-01-01 8:00:01UTC~2038/01/19 11:14:07UTC,測試很簡單:
mysql> insert into test_timestamp1 values('2038/01/19 11:14:07');
Query OK, 1 row affected (0.00 sec)
mysql> insert into test_timestamp1 values('2038/01/19 11:14:08');
ERROR 1292 (22007): Incorrect datetime value: '2038/01/19 11:14:08' for column 'time' at row 1

mysql> insert into test_timestamp1 values('1970-01-01 8:00:01');
Query OK, 1 row affected (0.00 sec)
mysql> insert into test_timestamp1 values('1970-01-01 8:00:00');
ERROR 1292 (22007): Incorrect datetime value: '1970-01-01 8:00:00' for column 'time' at row 1

  • 為什麼有這樣的限制?可以從資料檔案中找到答案:
mysql> select * from test_timestamp1 limit 2;
+---------------------+
| time                |
+---------------------+
| 2038-01-19 11:14:07 |
| 2038-01-19 11:14:06 |
+---------------------+
2038-01-19 11:14:07
查看錶空間檔案:
hexdump -C -v test_timestamp1.ibd|more
0000c1a0  00 00 00 07 75 0b 00 00  01 43 f1 16 e1 00 00 01
0000c1b0  7d 01 10 7f ff ff ff 00  00 00 68 00 1d 00 00 00
0000c1c0  07 75 0c 00 00 01 43 f1  17 e2 00 00 02 4e 01 10
0000c1d0  7f ff ff fe 00 00 00 70  00 1d 00 00 00 07 75 0d
0000c1e0  00 00 01 43 f1 7c b4 00  00 02 2a 01 10 7f ff ff

  • 猜測7f ff ff fe(01111 1111 .... 1110)就是2038-01-19 11:14:06,7f ff ff ff(01111 1111 .... 1111)(最高位是符號位?)就是2038-01-19 11:14:07,為什麼這麼說?
做個簡單的查詢:
mysql> select unix_timestamp('2038-01-19 11:14:07');
+---------------------------------------+
| unix_timestamp('2038-01-19 11:14:07') |
+---------------------------------------+
|                            2147483647 |
+---------------------------------------+
2147483647就是"2038/01/19 3:14:07UTC"減去"1970-01-01 8:00:01 UTC"的秒數,也就是說實際上mysql在儲存時間戳的時候,會求取32位的整數,儲存在磁碟上。
mysql> select pow(2,31)-1;
+-------------+
| pow(2,31)-1 |
+-------------+
|  2147483647 |
+-------------+


相關推薦

資料檔案timestamp範圍限制

建立表:mysql> desc test_timestamp1; +-------+-----------+------+-----+---------+-------+ | Field | T

彙編–資料型別WORD與DWORD

剛接觸彙編與逆向,記錄一些學習筆記。 原始碼: IDA彙編程式碼: 首先 1字=2位元組  1位元組=8位(8位元)=2位16進位制 var_6=dword ptr -6: ptr-6表示指標上移6個單位處,這裡的單位是指計算機的定址單位,一般按位元組定址,[

Oracle中資料檔案大小及數量限制

在Oracle中,資料庫是由例項和物理儲存結構組成的。而物理儲存結構是指儲存在磁碟上的物理檔案,包括資料檔案(data file)、控制檔案(control file)、聯機重做日誌(online redo log)、引數檔案(spfile/pfile)、警告日誌(aler

資料分析王祖賢的電影人生

作者:唐亦六安知乎專欄:https://www.zhihu.com/people/tang-yi

資料角度人臉識別中Feature Normalization,Weight Normalization以及Triplet的作用 資料角度人臉識別中Feature Normalization,Weight Normalization以及Triplet的作用

轉 從資料角度看人臉識別中Feature Normalization,Weight Normalization以及Triplet的作用 2018年10月19日 16:42:52

資料型別堆疊儲存

Java中的基本資料型別: JavaScript中的基本資料型別: 因為作業系統中 棧的體積相對小但是他的執行速度相對快,可以進行一些方法操作;而堆的體積大但是執行速度相對慢。所以在Java和JavaScript中堆疊的儲存是同一個原則的,即基本資料

ORACLE DBA工具收集(Oracle DUL/AUL/ODU 恢復工具,可以脫離Oracle執行環境,直接資料檔案中讀取記錄)

    遇到效能問題要進行調優時, 常常不知道要怎麼調優, 原因是不知道在哪兒出現了效能問題, 所以需要藉助於有效的效能工具. oramon是一個很有效的效能資料收集工具, 從基本效能檢視(如V$SYSSTAT和V$SESSION等)中取出有效的效能資料, 進行橫向縱向聯合比較分析, 如不同時間點的邏輯

資料:誰才是漫威的絕對C位

復聯4上映了!這次比美國還早了兩天。當然,我還沒看,不會給你們劇透,當然也不想不劇透。 這一部不僅是滅霸這一線劇情的結局,也

資料儲存(1):資料儲存人類文明-資料儲存器發展歷程

傳統文字儲存 泥版/鐘鼎/甲骨/莎草紙/羊皮紙等文字儲存 傳統的考古學家和歷史學家認為,楔形文字起源於美索不達米亞特殊的漁獵生活方式。這是較為通行的看法,西方的各種百科全書大都持這一觀點。約在公元前3400年左右,楔形文字雛形產生,多為影象。到公元前 500 年左右, 這種文字甚至成了西亞大部分地區通用的商業

“馬蜂窩事件”,投資人如何避免資料盡職調查背後的交易風險?

來源:Career In 投行PEVC 本文約4400字,建議閱讀10分鐘。 本文列舉三個網際網路行業典型場景,幫助投資人對相關問題有一個更為感性的理解。 10月21日,一篇名為《估值175億的旅遊獨角獸,是一座殭屍和水軍構成的鬼城?》在社交網路廣為流傳,該篇文章作者

【c++基礎】json檔案提取資料

前言 標註資料匯出檔案是json格式的,也就是python的dict格式,需要讀取標註結果,可以使用c++或者python,本文使用c++實現的。 JsonCpp簡介 JsonCpp是一種輕量級的資料交換格式,是個跨平臺的開源庫,可以從github和sourceforge上下載原始碼。 JsonCpp

Pythontxt檔案中逐行讀取資料

Python從txt檔案中逐行讀取資料   # -*-coding:utf-8-*- import os for line in open("./samples/label_val.txt"): print('line=', line, end = '') #後面

資料夾中獲取指定檔案的檔名

從資料夾中獲取指定檔案的檔名 有時候我們需要從資料夾中判斷一個指定的檔案是否存在,如果存在就返回檔名+字尾名,不存在返回空。前臺可以根據此判斷選擇性的進行圖片的展示情況。 前臺請求獲取響應的檔名 1.配置檔案內:配置路徑資訊 #圖片儲存路徑 本地磁碟C 下面的"XX資料夾"

Filecoin&Filenet評說二: 資料黑產為什麼區塊鏈3.0會以挖掘資料價值為突破口

昨天,瞎聊了幾句共享儲存兩個明星專案filecoin和filenet,沒想到共享儲存這條鏈上的朋友太多,快被口水碰死了,好吧,為了把屁股搽乾淨,再多說幾句吧。 首先推薦兩篇文章: 虎嗅:網絡黑產、爭奪用戶資訊背後的資料之戰 新浪:資料黑產調查:猖獗內鬼、黑客師徒與“灰色暴發戶” 不看

用pythontxt檔案中讀入資料

現在有如下資料集儲存在txt檔案中,利用python逐行讀取資料到list型別下。 1.658985 4.285136 -3.453687 3.424321 4.838138 -1.151539 -5.379713 -3.362104 0.972564

另類爬蟲:PDF檔案中爬取表格資料

簡介   本文將展示一個稍微不一樣點的爬蟲。   以往我們的爬蟲都是從網路上爬取資料,因為網頁一般用HTML,CSS,JavaScript程式碼寫成,因此,有大量成熟的技術來爬取網頁中的各種資料。這次,我們需要爬取的文件為PDF檔案。本文將展示如何利用Python的camelot模組

手把手教你如何用PythonPDF檔案中匯出資料(附連結)

有很多時候你會想用Python從PDF中提取資料,然後將其匯出成其他格式。不幸的是,並沒有多少Python包可以很好的執行這部分工作。在這篇貼子中,我們將探討多個不同的Python包,並學習如何從PDF中提取某些圖片。儘管在Python中沒有一個完整的解決方案,你還是應該能夠運用這裡的技能開始上手。

資料檔案大小限制、表空間大小限制資料檔案大小限制翻譯mos文章

Oracle 10g和11g中以下內容的最大值: 資料庫大小 表空間大小 檔案大小 小檔案資料庫對於小型檔案資料庫,Oracle資料庫具有以下限制: 最大資料檔案數為:65533 每個資料檔案的最大資料塊:2 ^ 22 -1 = 4194303 最大資料檔案大小= db_

一個例子Java的資料初始化和類載入

一、程式碼鎮帖 package javase.jvm; public class ClassInitTest { private static final String staticCodeBlock = " static code block ";

《機器學習實戰》第2章閱讀筆記3 使用K近鄰演算法改進約會網站的配對效果—分步驟詳細講解1——資料準備:文字檔案中解析資料(附詳細程式碼及註釋)

 本篇使用的資料存放在文字檔案datingTestSet2.txt中,每個樣本資料佔據一行,總共有1000行。 樣本主要包含以下3中特徵: (1)每年獲得飛行常客里程數 (2)玩視訊遊戲所耗時間百分比 (3)每週消費的冰淇淋公升數 在使用分類器之前,需要將處理的檔案格式