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時區的時間。
測試表結構
當前數據庫設置的時區為 8區
插入一條記錄
修改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
總結幾點更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!
喵:請你們不要強奸我的靈魂!
,
2023-07-13