今天研發在修復數據的時候發現代碼的日誌數據和mysql的數據對不上,因而開始了問題查找,發現是代碼寫入的時間字段是‘2019-02-05 09:08:48.567’,但數據庫的時間字段爲datetime,致使時間進位引發的,具體測試以下:mysql
表結構:sql
mysql> desc test; +------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+----------------+ | id | int | NO | PRI | NULL | auto_increment | | date0 | date | YES | | NULL | | | time0 | datetime | YES | | NULL | | | time3 | datetime(3) | YES | | NULL | | | timestamp0 | timestamp | YES | | NULL | | | timestamp3 | timestamp(3) | YES | | NULL | | +------------+--------------+------+-----+---------+----------------+ 6 rows in set (0.00 sec)
插入數據:
數據庫
mysql> insert into test (date0,time0,time3,timestamp0,timestamp3) values ('2019-03-03 13:00:00','2019-03-03 13:00:00.500','2019-03-03 13:00:00.500500','2019-03-03 13:00:00.500','2019-03-03 13:00:00.500500'); Query OK, 1 row affected, 1 warning (0.01 sec) mysql> insert into test (date0,time0,time3,timestamp0,timestamp3) values ('2019-03-03 13:00:00','2019-03-03 13:00:00.400','2019-03-03 13:00:00.500400','2019-03-03 13:00:00.400','2019-03-03 13:00:00.500400'); Query OK, 1 row affected, 1 warning (0.00 sec)
查詢數據:測試
mysql> select * from test; +----+------------+---------------------+-------------------------+---------------------+-------------------------+ | id | date0 | time0 | time3 | timestamp0 | timestamp3 | +----+------------+---------------------+-------------------------+---------------------+-------------------------+ | 1 | 2019-03-03 | 2019-03-03 13:00:01 | 2019-03-03 13:00:00.501 | 2019-03-03 13:00:01 | 2019-03-03 13:00:00.501 | | 2 | 2019-03-03 | 2019-03-03 13:00:00 | 2019-03-03 13:00:00.500 | 2019-03-03 13:00:00 | 2019-03-03 13:00:00.500 | +----+------------+---------------------+-------------------------+---------------------+-------------------------+ 2 rows in set (0.00 sec)
因而可知:spa
當咱們寫入時間字段有毫秒值,可是數據庫實際沒有毫秒值的時候,數據庫記錄的時間會根據四捨五入原則執行進位或者截取,若是在時間精度嚴格的數據庫上在寫入相似‘2019-03-03 23:59:59.600’這樣的時間的話會致使數據統計到下一天,形成統計不一致問題。日誌
解決方法:必定要統一數據時間字段的設置和寫入的時間精度。blog