MySQL 資料庫的時間溢位問題

更新於 2024/10/18閱讀時間約 2 分鐘
UNIX 在設計時,用 32 位元為基礎設計,Timestamp (time_t 結構) 順理成章也是 32 位元 (signed int32),從 1970 年開始算,導致它能記錄的時間在 2038 年會溢位變負數。
二進位的 00000000 00000000 00000000 00000001
為 1970/01/01 00:00:00
二進位的 01111111 11111111 11111111 11111111
為 2038/01/19 03:14:07
而在 64bits 的 Linux 中,MySQL 用 timestamp 型態仍然會有這個問題。所以在開發網站,若變成很熱門的網站後,到了 2038 年,跟時間有關的部份就會科科。
timestamp 型態 query 測試驗證:
create table tstest (ts timestamp); 
insert into tstest values ('1895–10–22'); # 日本統治台灣
insert into tstest values ('2047–08–17'); # 貓王的歌曲變公開版權
結果 select * from tstest 時,只會看到二筆 0000–00–00 00:00:00
目前解決方法是用 datetime 型態
create table dttest (dt datetime); 
insert into dttest values ('1895–10–22'); # 日本統治台灣
insert into dttest values ('2047–08–17'); # 貓王的歌曲變公開版權
之後 select * from dttest 時, 會看到剛才二筆資料都正確顯示
MySQL 日後 timestamp 會不會變成 64bits? 問甲骨文的 Lawrence Ellison

本文稍早發佈於 Medium
為什麼會看到廣告
    avatar-img
    2會員
    26內容數
    留言0
    查看全部
    avatar-img
    發表第一個留言支持創作者!
    WILSON PENG的沙龍 的其他內容
    有一種狀況,URL GET method 有設變數,卻是空值 http://foo.bar.xxx/idol.php?IdolGroup= 這時,變數就算初始化也還是 null, 不會變成預設值
    程式如下: 跑了五次,每次判斷一千萬回 f1() 陣列的方式: 5.2219750881195 5.194901943
    這支 PHP 的小程式,輸入時間,會顯示回傳的時間: 放在 command line 執行,如下: $ php cst.php “2018–04–01 00:00:00 cst” 多了 14 小時,好神奇。 追 PHP Source 好了,看問題在哪。找到這支定義時區的設定: timezonemap
    IPv4 Private IP RFC 1918 定義三段 Private IP: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 一般 NAT 用。這是大家都熟悉的 IP, 後來又多了一些 IP 可以用: RFC 6598 新增的 Private IP: 100
    我喜歡撫摸著她的感覺,手指在她身上游移….
    新界粉嶺 孔明下降之乩語 我不知道預言是什麼狀況,但是看到近九十年前的可考鸞文,覺得真是神奇。有些預言完全命中,有些預言似乎不準,有些則待日後再回頭看有沒有猜對。
    有一種狀況,URL GET method 有設變數,卻是空值 http://foo.bar.xxx/idol.php?IdolGroup= 這時,變數就算初始化也還是 null, 不會變成預設值
    程式如下: 跑了五次,每次判斷一千萬回 f1() 陣列的方式: 5.2219750881195 5.194901943
    這支 PHP 的小程式,輸入時間,會顯示回傳的時間: 放在 command line 執行,如下: $ php cst.php “2018–04–01 00:00:00 cst” 多了 14 小時,好神奇。 追 PHP Source 好了,看問題在哪。找到這支定義時區的設定: timezonemap
    IPv4 Private IP RFC 1918 定義三段 Private IP: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 一般 NAT 用。這是大家都熟悉的 IP, 後來又多了一些 IP 可以用: RFC 6598 新增的 Private IP: 100
    我喜歡撫摸著她的感覺,手指在她身上游移….
    新界粉嶺 孔明下降之乩語 我不知道預言是什麼狀況,但是看到近九十年前的可考鸞文,覺得真是神奇。有些預言完全命中,有些預言似乎不準,有些則待日後再回頭看有沒有猜對。
    你可能也想看
    Google News 追蹤
    Thumbnail
    *合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
    Thumbnail
    這個章節是由MySQL 基本語法 (六)延伸的練習題
    Thumbnail
    依照上圖的資料表創建出公司的資料庫 Employee CREATE TABLE `employee`( `emp_id` INT PRIMARY KEY, `name` VARCHAR(20), `birth_date` DATE, `sex`VARCHAR(1), `salary
    Thumbnail
    底下列出常用的資料類型: TINYINT:最小的整數,有符號整數-128~127;無符號整數0~255。 SMALLINT:短整數,有符號整數-32,768~32,767;無符號整數0~65,535。 MEDIUMINT:中型整數,有符號整數-8,388,608~8,388,607;無符號整數
    Thumbnail
    根據上一篇部署完畢Laravel 專案後,本章要來幫線上專案設定資料庫,fly.io 部署MySQL免費容量是3GB,在設定的時候要記得設定size,避免超過要收費。 接下來建置mysql 應用程序並創建屬於 mysql volume ,避免數據資料遺失~
    Thumbnail
    在現代資訊科技的浪潮下,資料庫管理系統扮演著舉足輕重的角色,決定著企業和開發者如何有效地儲存、查詢和操作數據。MySQL和MongoDB是兩種廣泛使用的資料庫,分別代表了傳統的關聯式資料庫(RDBMS)和新興的非關聯式資料庫(NoSQL)的典型。
    Thumbnail
    *合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
    Thumbnail
    這個章節是由MySQL 基本語法 (六)延伸的練習題
    Thumbnail
    依照上圖的資料表創建出公司的資料庫 Employee CREATE TABLE `employee`( `emp_id` INT PRIMARY KEY, `name` VARCHAR(20), `birth_date` DATE, `sex`VARCHAR(1), `salary
    Thumbnail
    底下列出常用的資料類型: TINYINT:最小的整數,有符號整數-128~127;無符號整數0~255。 SMALLINT:短整數,有符號整數-32,768~32,767;無符號整數0~65,535。 MEDIUMINT:中型整數,有符號整數-8,388,608~8,388,607;無符號整數
    Thumbnail
    根據上一篇部署完畢Laravel 專案後,本章要來幫線上專案設定資料庫,fly.io 部署MySQL免費容量是3GB,在設定的時候要記得設定size,避免超過要收費。 接下來建置mysql 應用程序並創建屬於 mysql volume ,避免數據資料遺失~
    Thumbnail
    在現代資訊科技的浪潮下,資料庫管理系統扮演著舉足輕重的角色,決定著企業和開發者如何有效地儲存、查詢和操作數據。MySQL和MongoDB是兩種廣泛使用的資料庫,分別代表了傳統的關聯式資料庫(RDBMS)和新興的非關聯式資料庫(NoSQL)的典型。