1. Home
  2. /
  3. Web technology
  4. /
  5. MySql
  6. /
  7. [ Mysql ] –...

[ Mysql ] – TIMESTAMP 精度問題

評等結果
點擊便能為這篇文章進行評等!
[評等總次數: 0,平均評等: 0]

又發生的意料之外的時間精度問題,在 Mysql 中時間的精度只到秒,如果你要到毫秒就一定要使用 TIMESTAMP ,但 TIMESTAMP 預設值如果你設 CURRENT_TIMESTAMP 其實也是只有到秒,你需要設成 CURRENT_TIMESTAMP(3) 或 CURRENT_TIMESTAMP(6) 依你的需求去設你要的精度。

你可以在cli下

select CURRENT_TIMESTAMP(3);

2020-08-27 11:40:33.896

select CURRENT_TIMESTAMP(6);

2020-08-27 11:40:33.909491

建立資料表指令碼

CREATE TABLE IF NOT EXISTS `test`
        (id varchar(30) NOT NULL,
        time TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP(3),
        PRIMARY KEY (id));
CREATE TABLE IF NOT EXISTS `test`
        (id varchar(30) NOT NULL,
        time TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP(6),
        PRIMARY KEY (id));

修改現有資料表

ALTER TABLE `test` CHANGE `time` `time` TIMESTAMP(3) NULL DEFAULT CURRENT_TIMESTAMP(3);
ALTER TABLE `test` CHANGE `time` `time` TIMESTAMP(6) NULL DEFAULT CURRENT_TIMESTAMP(6);

如果你有使用 phpmyadmin 在備份資料時 匯出的時候

CREATE TABLE `test` (
  `id` varchar(30) NOT NULL,
  `time` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP

建立資料表的語法會有中斷
但資料還是有完整的匯出

參考網址:https://stackoverflow.com/questions/23671222/mysql-default-value-for-timestamp3

評等結果
點擊便能為這篇文章進行評等!
[評等總次數: 0,平均評等: 0]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *