tft每日頭條

 > 圖文

 > mysql的時間日期函數

mysql的時間日期函數

圖文 更新时间:2024-07-04 06:44:11
幾個日期時間相關的概念

1. 時間戳

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

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

2. 格林尼治标準時間

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

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

3. UTC

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

UTC時間是基于标準的GMT提供的準确時間,因此我們所說的UTC時間,也就是0時區的時間。

測試表結構

mysql的時間日期函數(常用的日期時間類型)1

當前數據庫設置的時區為 8區

mysql的時間日期函數(常用的日期時間類型)2

插入一條記錄

mysql的時間日期函數(常用的日期時間類型)3

修改time_zone為0時區設置後查看

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

注意點:

insert 時,TIMESTAMP 字段值必須是與 MySQL 設置的時區一緻,因為 MySQL 隻會根據 time_zone 參數設置的時區轉換到 UTC 時間。

特點:

1. 與時區相關,内部統一使用4字節的 UTC 時間戳存儲 2. insert 可以使用 MySQL 的 CURRENT_TIMESTAMP 3. update 可以使用 MySQL 的 on update CURRENT_TIMESTAMP

總結幾點
  1. 不管使用 INT、DATETIME、TIMESTAMP 哪一種,系統都必須要關心時區
  2. 個人建議的實踐方式是将 MySQL 時區設置為 00:00,數據應該是 UTC 時間入、UTC 時間出,各系統展示時,再從 UTC 時間轉換為相應的時區時間

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved