mysql時間截取仍是時間進位

      今天研發在修復數據的時候發現代碼的日誌數據和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

相關文章
相關標籤/搜索