FROM_ISO8601_DATE
描述
将 ISO8601 格式的日期表达式转化为 date 类型的日期表达式。 符合 ISO 8601 标准的日期字符串,支持的格式包括:
- YYYY:仅年份(返回该年 1 月 1 日)
- YYYY-MM:年月(返回该月 1 日)
- YYYY-DDD:年 + 年中的天数(DDD 范围 1-366,如 0000-059 表示 0000 年第 59 天)
- YYYY-WWW:年 + 周数(WWW 范围 1-53,返回该周的周一)
- YYYY-WWW-D:年 + 周数 + 周内天数(D 范围 1-7,1 表示周一,7 表示周日)
- 在该格式中,一年的第一周必须包含该周的星期四,不然算作上一年的周
语法
from_iso8601_date(<dt>)
参数
参数 | 说明 |
---|---|
<date> | ISO8601 格式的日期,为字符串类型 |
返回值
返回 DATE 类型,格式为 YYYY-MM-DD,表示解析后的具体日期。
- 若输入格式无,返回错误
- 输入 NULL,返回 NULL
举例
-- 解析不同ISO 8601格式的日期字符串
select
from_iso8601_date('2023') as year_only,
from_iso8601_date('2023-10') as year_month,
from_iso8601_date('2023-10-05') as full_date;
+------------+------------+------------+
| year_only | year_month | full_date |
+------------+------------+------------+
| 2023-01-01 | 2023-10-01 | 2023-10-05 |
+------------+------------+------------+
-- 解析“年-天数”格式
select
from_iso8601_date('2021-001') as day_1,
from_iso8601_date('2021-059') as day_59,
from_iso8601_date('2021-060') as day_60,
from_iso8601_date('2024-366') as day_366;
+------------+------------+------------+------------+
| day_1 | day_59 | day_60 | day_366 |
+------------+------------+------------+------------+
| 0000-01-01 | 0000-02-28 | 0000-03-01 | 2024-12-31 |
+------------+------------+------------+------------+
-- 解析“YYY-MMM-D”格式(每周以周一为第一天),因为0522-01-01 才是周四,所以第一周之前的都会返回 0521 的年份
select from_iso8601_date('0522-W01-1') as week_1;
+------------+
| week_1 |
+------------+
| 0521-12-29 |
+------------+
select from_iso8601_date('0522-W01-4') as week_4;
+------------+
| week_4 |
+------------+
| 0522-01-01 |
+------------+
---YYY-MMM格式,第一周的周一在521年
select from_iso8601_date('0522-W01') as week_1;
+------------+
| week_1 |
+------------+
| 0521-12-29 |
+------------+
---格式错误,返回错误
select from_iso8601_date('2023-10-01T12:34:10');
ERROR 1105 (HY000): errCode = 2, detailMessage = (10.16.10.3)[INVALID_ARGUMENT]Operation from_iso8601_date of 2023-10-01T12:34:10 is invalid
---输入 NULL
select from_iso8601_date(NULL);
+-------------------------+
| from_iso8601_date(NULL) |
+-------------------------+
| NULL |
+-------------------------+