mysql中時(shí)間戳以整數(shù)形式存儲(chǔ),表示自1970年1月1日utc午夜起經(jīng)過(guò)的秒數(shù)。類型包括timestamp(自動(dòng)更新)和datetime(非自動(dòng)更新),精度范圍為0-6(0表示無(wú)分?jǐn)?shù)秒,6表示存儲(chǔ)微秒精度)。mysql 8.0引入了專門的date和time數(shù)據(jù)類型。
MySQL 時(shí)間戳存儲(chǔ)方式
問(wèn)題: MySQL 中時(shí)間戳是如何存儲(chǔ)的?
答案: MySQL 使用整數(shù)類型存儲(chǔ)時(shí)間戳,該整數(shù)表示自特定參考點(diǎn)(通常為 1970 年 1 月 1 日午夜 UTC)以來(lái)經(jīng)過(guò)的秒數(shù)。
詳細(xì)解釋:
MySQL 提供了兩種主要的時(shí)間戳類型:
TIMESTAMP: 它是一個(gè)自動(dòng)更新的日期時(shí)間類型,存儲(chǔ)為整數(shù),表示自 Unix 紀(jì)元(1970 年 1 月 1 日午夜 UTC)以來(lái)經(jīng)過(guò)的秒數(shù)。
DATETIME: 它是一個(gè)非自動(dòng)更新的日期時(shí)間類型,存儲(chǔ)為一個(gè)整數(shù),表示自 Unix 紀(jì)元以來(lái)經(jīng)過(guò)的秒數(shù),以及一個(gè)分?jǐn)?shù)部分,表示自該秒以來(lái)的微秒數(shù)。
默認(rèn)情況下,MySQL 將 TIMESTAMP 值存儲(chǔ)為 8 字節(jié)的有符號(hào)整數(shù),它可以表示從公元前 4713 年到公元 292278993 年之間的時(shí)間。
可以通過(guò)指定 TIMESTAMP [fractional_seconds_precision] 語(yǔ)法來(lái)指定時(shí)間戳的分?jǐn)?shù)秒精度。精度范圍從 0 到 6,0 表示沒(méi)有分?jǐn)?shù)秒,6 表示存儲(chǔ)微秒精度。例如,TIMESTAMP(6) 將存儲(chǔ)微秒精度的時(shí)間戳。
注意事項(xiàng):
MySQL 8.0 引入了新的 DATE 和 TIME 數(shù)據(jù)類型,它們專門用于存儲(chǔ)日期和時(shí)間,而不是使用整數(shù)存儲(chǔ)時(shí)間戳。
使用 TIMESTAMP 類型時(shí),需要注意時(shí)區(qū)轉(zhuǎn)換,因?yàn)樗鎯?chǔ)的是自 Unix 紀(jì)元以來(lái)經(jīng)過(guò)的秒數(shù),而不是特定時(shí)區(qū)的日期時(shí)間。