免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
MySQL 常用的日期時間類型

1. 時間戳

時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現(xiàn)在的總秒數。

也就是說,時間戳它是一個偏移量,比如時間戳 1551618793,就是指距離 1970-01-01 00:00:00 這個基準時間 1551618793 秒的時間,就是格林威治時間 2019-03-03T13:13:13+00:00(這個時間表示法見下面的 ISO 8601 介紹)。

2. 格林尼治標準時間

格林尼治標準時間(Greenwich Mean Time,GMT)是指位于倫敦郊區(qū)的皇家格林尼治天文臺的標準時間,因為本初子午線被定義在通過那里的經線。理論上來說,格林尼治標準時間的正午是指當太陽橫穿格林尼治子午線時的時間。

同時格林尼治標準時間也是世界基準時間,全世界被劃分為24個時區(qū),以尼治標準時間為0時區(qū),其他時區(qū)在此時間上加上時區(qū)偏移量,比如我們中國北京時間就是+8區(qū),格林威治時間 2019-03-03T13:13:13+00:00,就是北京時間的 2019-03-03T21:13:13+08:00。

3. UTC

協(xié)調世界時,又稱世界統(tǒng)一時間、世界標準時間、國際協(xié)調時間。由于英文(CUT)和法文(TUC)的縮寫不同,作為妥協(xié),簡稱UTC。

UTC時間是基于標準的GMT提供的準確時間,因此我們所說的UTC時間,也就是0時區(qū)的時間。

4. ISO 8601

ISO 8601 是國際標準化組織,對于日期和時間的一種標準表示方法。

如我們所說的 2019-03-03 21:13:13 這個日期時間上并沒有包含時區(qū)信息,在國際化上使用,顯然這么表示是無法滿足要求的,因此就有了 ISO 8601 日期時間表示法。

如北京時間 2019-03-03 21:13:13,ISO 8601 表示法為:2019-03-03T21:13:13+08:00,轉換為UTC時間就是 2019-03-03T13:13:13+00:00(或 2019-03-03T13:13:13Z,+00:00 可以用一個字母 Z 表示)。

MySQL 存儲日期時間一般常用幾個類型

1. INT 或 BIGINT

INT 可以存儲秒級時間戳(10位整數),BIGINT 可以存儲毫秒級時間戳(13位整數)。

注意點:

使用時,必須將日期時間轉換為時間戳整數,再存儲,必須調用方約定系統(tǒng)使用時區(qū)。

特點:

1. 時間戳沒有時區(qū)信息,必須系統(tǒng)自己約定使用什么時區(qū)的時間戳2. 只能表示 1970-01-01 開始的時間3. 不能使用 MySQL 提供的各種日期時間類函數4. 檢索方便

2. DATETIME

DATETIME 使用8字節(jié)存儲,因此能表示的時間范圍比較大,可表示 1000-01-01 00:00:00 到 9999-12-31 23:59:59 范圍的時間。

注意點:

DATETIME 類型不關心時區(qū),完全由調用的系統(tǒng)自己決定。

特點:

1. 沒有時區(qū)信息,必須系統(tǒng)自己約定使用什么時區(qū)的時間2. 表示范圍廣3. 查詢效率沒有使用使用 INT 高4. 可以使用 MySQL 提供的種類日期時間函數

3. TIMESTAMP

MySQL 對于 TIMESTAMP 的存儲,內部使用的是4字節(jié)整數,又受限與時間戳定義,因此,可表示范圍大約只有 1970-01-01 00:00:01 到 2038-01-19 03:14:07。

TIMESTAMP 與時區(qū)相關,存入時會將時間從 MySQL time_zone 參數設置的時區(qū),轉換成 UTC 時間的時間戳存儲,讀取時,再從 UTC 時間戳轉換成 time_zone 參數設置的時區(qū)時間。

示例:

測試表結構

當前數據庫設置的時區(qū)為 +8區(qū)

插入一條記錄

修改time_zone為0時區(qū)設置后查看

可以看到,DateTime類型的,并沒有受時區(qū)設置變化影響,TIMESTAMP 類型自動根據修改后的當前時區(qū)設置顯示了正確的時間。 這個變化,并不是修改時區(qū)后,MySQL 把 TIMESTAMP 字段的值修改了,而是顯示時,根據當前時區(qū)正確顯示了,存儲的值并沒有變化,一直是 UTC 時間。

注意點:

insert 時,TIMESTAMP 字段值必須是與 MySQL 設置的時區(qū)一致,因為 MySQL 只會根據 time_zone 參數設置的時區(qū)轉換到 UTC 時間。

特點:

1. 與時區(qū)相關,內部統(tǒng)一使用4字節(jié)的 UTC 時間戳存儲2. insert 可以使用 MySQL 的 CURRENT_TIMESTAMP 3. update 可以使用 MySQL 的 on update CURRENT_TIMESTAMP

總結幾點

  1. 不管使用 INT、DATETIME、TIMESTAMP 哪一種,系統(tǒng)都必須要關心時區(qū)

  2. 個人建議的實踐方式是將 MySQL 時區(qū)設置為 +00:00,數據應該是 UTC 時間入、UTC 時間出,各系統(tǒng)展示時,再從 UTC 時間轉換為相應的時區(qū)時間

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
MySQL的時間戳timestamp datetime
MySQL里面的時間類型datetime,date,timestamp,time和y
mysql 數據庫存時間最好是時間戳還是格式的時間
MYSQL支持的數據類型
C#中的時間戳
MySQL timestamp類型與時區(qū)的介紹
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服