2019年11月30日

MySQL/MariaDB如何儲存毫秒、微秒?

DATATIME及TIMESTAMP

MySQL跟MariaDB常用的時間類型有DATATIMETIMESTAMP,在比較新版本的MySQL中,是支援在這些類型中儲存毫秒(10^-3秒)、微秒(10^-6秒)的。

透過phpMyAdmin介面,可以設定DATATIME及TIMESTAMP的長度(精準度),長度的值域為0~6,長度的意思是儲存到小數點下第n位,也就是10^-n

或是透過SQL的方式建立或修改時間類型的欄位時,也可以加上長度的設定。

CREATE TABLE `test` ( 
  `created_at` DATETIME(3) NULL , 
  `updated_at` TIMESTAMP(6) NULL 
) 

舉例來說,TIMESTAMP設定為長度設定為6的話,會得到TIMESTAMP(6)的類型,代表在資料庫中,此欄位最多可以儲存到微秒,像是:

  • 2019-11-29 09:07:26.819359
  • 2019-11-29 09:07:26.000000
  • 2019-11-29 09:07:26.999999