EXTRACT 函数从日期时间值和时间间隔中抽取字段(或计算值)。
对于 YEAR、MONTH、DAY、HOUR、MINUTE、DAYS、DAYOFYEAR、DAYOFWEEK、MONTHS、QUARTEROFYEAR、QUARTERS、WEEKS、WEEKOFYEAR 以及 WEEKOFMONTH,抽取的结果是 INTEGER,但对于 SECOND,抽取的结果是 FLOAT,对于 ISLEAPYEAR,抽取的结果是 BOOLEAN。如果 SourceDate 为 NULL,则无论对于哪种抽取类型,结果都是 NULL。
EXTRACT 从日期时间值和时间间隔抽取单独的字段。您只能抽取日期时间值中存在的字段,日期时间值由第二个参数指定。如果数据类型中不存在请求的字段,则生成解析时或运行时错误。
抽取 | 描述 |
---|---|
YEAR | 年 |
MONTH | 月 |
DAY | 日 |
HOUR | 小时 |
MINUTE | 分钟 |
SECOND | 秒 |
DAYS | 0001 年 1 月 1 日和 SourceDate 之间的天数。 |
DAYOFYEAR | 一年中的日期 |
DAYOFWEEK | 一周中的日期:星期日 = 1,星期一 = 2,星期二 = 3,星期三 = 4,星期四 = 5,星期五 = 6,星期六 = 7。 |
MONTHS | 0001 年 1 月 1 日和 SourceDate 之间的月数。 |
QUARTEROFYEAR | 一年中的季度:一月到三月 = 1,四月到六月 = 2,七月到九月 = 3,十月到十二月 = 4。 |
QUARTERS | 0001 年 1 月 1 日和 SourceDate 之间的季度数。 |
WEEKS | 0001 年 1 月 1 日和 SourceDate 之间的周数。 |
WEEKOFYEAR | 一年中的周 |
WEEKOFMONTH | 一月中的周 |
ISLEAPYEAR | 是否为润年 |
EXTRACT(YEAR FROM CURRENT_DATE)和
EXTRACT(HOUR FROM LOCAL_TIMEZONE)都可以正确执行,但
EXTRACT(DAY FROM CURRENT_TIME)失败。
EXTRACT (DAYS FROM DATE '2000-02-29')计算 0001 年到 '2000-02-29' 之间的天数,而
EXTRACT (DAYOFYEAR FROM CURRENT_DATE)计算今年开始以来的天数,但
EXTRACT (DAYOFYEAR FROM CURRENT_TIME)失败,因为 CURRENT_TIME 未包含日期信息。