MySQL EXTRACT() 函数可以使用以下复合单位 -
- SECOND_MICROSECOND
- MINUTE_MICROSECOND HOUR_MICROSECOND
- DAY_MICROSECOND
- MINUTE_SECOND
- HOUR_SECOND
- HOUR_MINUTE
- DAY_SECOND
- DAY_MINUTE
- DAY_HOUR
- YEAR_MONTH
EXTRACT() 函数中使用的这些复合单位的一些示例如下 -
mysql> Select EXTRACT(YEAR_MONTH from '2017-10-20');
+---------------------------------------+
| EXTRACT(YEAR_MONTH from '2017-10-20') |
+---------------------------------------+
| 201710 |
+---------------------------------------+
1 row in set (0.00 sec)
以上查询将返回该日期的年份和月份值。
mysql> Select EXTRACT(DAY_HOUR from '2017-10-20 05:46:45');
+----------------------------------------------+
| EXTRACT(DAY_HOUR from '2017-10-20 05:46:45') |
+----------------------------------------------+
| 2005 |
+----------------------------------------------+
1 row in set (0.00 sec)
上面的查询将返回日期中的日期和小时值。
我们必须考虑到上述复合单位是一组完整的值,即我们是否将使用DAY_MINUTE,MySQL 返回日、小时和分钟。这意味着通常预期的任何值都会填充在开始和结束单位之间。
例如,下面的查询使用 DAY_MICROSECOND 复合单位,MySQL 返回 DAY、HOUR、MINUTE、SECOND 和微秒。这意味着 HOUR、MINUTE 和 SECOND 的值在 DAY 和 MICROSECOND 之间填充。
mysql> Select EXTRACT(DAY_MICROSECOND from '2017-10-22 05:52:45.102356');
+---------------------------------------------------------------------------+
| EXTRACT(DAY_MICROSECOND from '2017-10-22 05:52:45.102356') |
+---------------------------------------------------------------------------+
| 22055245102356 |
+---------------------------------------------------------------------------+
1 row in set (0.00 sec)