MySQL 將字串或數字指定為日期值時,字串或數字應該包含多少位數字?


如果將年份視為4位數字,則MySQL將字串或數字指定為日期值至少需要8位數字。在這種情況下,如果我們還需要儲存微秒,則值最多可以包含20位數字。

mysql> Select TIMESTAMP('20171022040536.100000');
+-----------------------------------+
| TIMESTAMP('20171022040536100000') |
+-----------------------------------+
| 2017-10-22 04:05:36.100000        |
+-----------------------------------+
1 row in set, 1 warning (0.00 sec)

上面的查詢使用20位數字的字串作為TIMESTAMP值。最後6位數字表示微秒。

mysql> Select TIMESTAMP(20171022);
+---------------------+
| TIMESTAMP(20171022) |
+---------------------+
| 2017-10-22 00:00:00 |
+---------------------+
1 row in set (0.00 sec)

上面的查詢使用8位數字的字串作為TIMESTAMP值。

mysql> Select TIMESTAMP(201710);
+-------------------+
| TIMESTAMP(201710) |
+-------------------+
| NULL              |
+-------------------+
1 row in set, 1 warning (0.00 sec)

上面的查詢返回NULL,因為數字位數少於8位。

相反,如果將年份視為2位數字,則MySQL將字串或數字指定為日期值至少需要6位數字。在這種情況下,如果我們還需要儲存微秒,則值最多可以包含18位數字。

mysql> Select TIMESTAMP(171022);
+---------------------+
| TIMESTAMP(171022)   |
+---------------------+
| 2017-10-22 00:00:00 |
+---------------------+
1 row in set (0.00 sec)

上面的查詢使用6位數字的字串作為TIMESTAMP值。

mysql> Select TIMESTAMP('171022040536.200000');
+----------------------------------+
| TIMESTAMP('171022040536.200000') |
+----------------------------------+
| 2017-10-22 04:05:36.200000       |
+----------------------------------+
1 row in set (0.00 sec)

上面的查詢使用18位數字的字串作為TIMESTAMP值。小數點(.)後的最後6位數字表示微秒。

mysql> Select TIMESTAMP(1710);
+-----------------+
| TIMESTAMP(1710) |
+-----------------+
| NULL            |
+-----------------+
1 row in set, 1 warning (0.00 sec)

上面的查詢返回NULL,因為數字位數少於6位。

更新於:2020年1月29日

82 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.