字符串或数字中应有多少位数字,以便 MySQL 可以将其指定为日期值?
mysqlmysqli database更新于 2025/4/8 15:08:17
虽然将年份视为 4 位数字,但字符串或数字中至少需要 8 位数字,MySQL 才能将其指定为日期值。在这种情况下,如果我们还想存储微秒,那么该值最多可以有 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。
相关文章
有用资源
mysql 参考教程 - 该教程包含有关 mysql 的更多信息:https://www.cainiaomax.com/mysql/

