mysql 時間型別的物理儲存

2021-08-26 04:01:13 字數 1174 閱讀 8134

1.timestamp型別

在行資料中記錄的是時間戳,四個位元組,將四個位元組的資料轉換為整數就是從1970開始的秒數值

2.date型別

儲存3個位元組,例如,若行中記錄的是:

(gdb) p buf[30]

$4 = 33 '!'

(gdb) p buf[31]

$5 = -73 '�'

(gdb) p buf[32]

$6 = 15 '\017'

表示為三個位元組的二進位制:

00001111 1011011

1 001

00001

其中,1-5位表示日期,6-9位表示月份,剩餘的表示年份,因此上述date型別可轉換為2011-09-01

3.year型別

記錄年份,用乙個位元組記錄,從2023年開始

例如(gdb) p buf[33]

$7 = 112 'p'

表示112+1900 = 2023年

4.datetime

8個位元組表示,例如輸入為:2011-08-27 19:32:46

(gdb) p buf[30]

$122 = -98 '\236'

(gdb) p buf[31]

$123 = 3 '\003'

(gdb) p buf[32]

$124 = -74 '�'

(gdb) p buf[33]

$125 = 106 'j'

(gdb) p buf[34]

$126 = 74 'j'

(gdb) p buf[35]

$127 = 18 '\022'

(gdb) p buf[36]

$128 = 0 '\0'

(gdb) p buf[37]

$129 = 0 '\0'

那麼轉換為(256-98) + 3*256 + (256-74) * 256 * 256 + 106 * 256 * 256 * 256 + 74 *256 * 256 * 256*256 + 18 * 256 *256 * 256 * 256*256

計算結果為:20110827193246

, 與輸入的日期相對應!

end

mysql時間儲存用什麼型別

關於夏令時,utc,gmt這幾個概念建議先簡單了解下,下面不做解釋 先丟結論以表誠意 如果程式不需要考慮時區,夏令時或者將來資料庫的機子遷移到別的地方時區變化,用datetime型別比較方便 用timestamp可以避免上述的問題 mysql官方文件的簡單解釋是資料存入timestamp時會根據時區...

Mysql儲存時間選擇怎樣的字段型別

儲存時間,常用的有三個選擇datetime timestamp int。昨夜同事問到了,於是今天就總結一下自己的理解。插入效率 datetime timestamp int 讀取效率 int timestamp datetime 儲存空間 datetime timestamp int 具體上面的實驗...

mysql 的時間型別

在mysql中表示時間的資料型別有date datetime year timestamp time五種型別,它們的作用如下 型別 顯示格式 取值 儲存空間 零值 datetime yyyy mm dd hh mm ss 1000 01 01 00 00 00 到 9999 12 31 23 59 ...