如果我们只向 MySQL 的 EXTRACT() 函数提供日期值,尝试提取时间值,会输出什么?


当我们尝试从日期中提取小时值时,EXTRACT() 函数会输出 0,并显示如下所示的警告:

mysql> Select EXTRACT(Hour from '2017-10-20');

+---------------------------------+
| EXTRACT(Hour from '2017-10-20') |
+---------------------------------+
| 0                               |
+---------------------------------+
1 row in set, 1 warning (0.00 sec)

mysql> Show Warnings;

+---------+------+----------------------------------------------+
| Level   | Code | Message                                      |
+---------+------+----------------------------------------------+
| Warning | 1292 | Truncated incorrect time value: '2017-10-20' |
+---------+------+----------------------------------------------+
1 row in set (0.00 sec)

现在,当我们尝试从日期中提取分钟值时,EXTRACT() 函数会将日期中的世纪值作为输出,并显示如下所示的警告:

mysql> Select EXTRACT(Minute from '2017-10-20');
+-----------------------------------+
| EXTRACT(Minute from '2017-10-20') |
+-----------------------------------+
| 20                                |
+-----------------------------------+
1 row in set, 1 warning (0.00 sec)
mysql> Show Warnings;
+---------+------+----------------------------------------------+
| Level   | Code | Message                                      |
+---------+------+----------------------------------------------+
| Warning | 1292 | Truncated incorrect time value: '2017-10-20' |
+---------+------+----------------------------------------------+
1 row in set (0.00 sec)

现在,当我们尝试从日期中提取秒值时,EXTRACT() 函数会将年份值作为输出,并显示如下所示的警告:

mysql> Select Extract(Second from '2017-10-20');

+-----------------------------------+
| Extract(Second from '2017-10-20') |
+-----------------------------------+
| 17                                |
+-----------------------------------+
1 row in set, 1 warning (0.00 sec)

mysql> Show Warnings;

+---------+------+----------------------------------------------+
| Level   | Code | Message                                      |
+---------+------+----------------------------------------------+
| Warning | 1292 | Truncated incorrect time value: '2017-10-20' |
+---------+------+----------------------------------------------+
1 row in set (0.00 sec)

如果尝试从当前日期获取时间值(小时、分钟和秒),例如使用 Curdate() 代替日期,我们将得到类似的结果。

更新于:2020年1月29日

68 次查看

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告