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位。
广告
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP