Функция extract
Область применения: Databricks SQL Databricks Runtime
Возвращает field
из source
.
Синтаксис
extract(field FROM source)
Аргументы
-
field
: ключевое слово, определяющее, какую частьsource
следует извлечь. -
source
: ,DATE
TIMESTAMP
илиINTERVAL
выражение.
Возвраты
Если для field
задано значение SECOND
, то результатом будет DECIMAL(8, 6)
.
Во всех остальных случаях — INTEGER
.
Поддерживается values из field
, когда source
равно DATE
или TIMESTAMP
:
-
YEAR
,Y
, ,YEARS
YR
YRS
: поле года -
YEAROFWEEK
: ISO 8601 еженедельный нумерующий год, в который попадает дата и время. Например, 2005-01-02 относится к 53-й неделе 2004 года, поэтому результатом будет 2004. -
QUARTER
,QTR
: квартал (1 - 4) года, в который падает дата и время. -
MONTH
, ,MON
MONS
MONTHS
: поле месяца (1 – 12) -
WEEK
, :W
WEEKS
число iso 8601 недели на неделе. Считается, что неделя начинается в понедельник, а первая неделя года — это та, в которой >3 дня. В системе нумерации недель по стандарту ISO первые дня января могут относится к 52-й или 53-й неделе предыдущего года, а последние дни декабря — к первой неделе следующего года. Например, 2005-01-02 относится к 53-й неделе 2004 года, а 2012-12-31 — к первой неделе 2013 года. -
DAY
, :D
DAYS
день поля месяца (1 – 31) -
DAYOFWEEK
,DOW
: День недели для даты и времени как воскресенье(1) до субботы(7) -
DAYOFWEEK_ISO
,DOW_ISO
: ISO 8601 основанный день недели для даты и времени в понедельник(1) до воскресенья(7) -
DOY
: день года (1 - 365/366) -
HOUR
, ,H
HOURS
HR
HRS
, : поле часа (0 – 23) -
MINUTE
,M
, ,MIN
MINS
MINUTES
: поле минут (0 – 59) -
SECOND
,S
, ,SEC
SECONDS
SECS
: поле секунд, включая дробные части
Поддерживаются values для field
, когда source
— это INTERVAL
(регистр не учитывается):
-
YEAR
, , ,Y
YEARS
YR
YRS
: общий месяц / 12 -
MONTH
, ,MON
MONS
MONTHS
: общий месяцы % 12 -
DAY
, :D
DAYS
часть интервала в днях -
HOUR
,H
, ,HOURS
HR
HRS
: сколько часов содержит микросекунда -
MINUTE
, ,M
,MIN
MINS
MINUTES
: сколько минут осталось после приема часов из микросекунд -
SECOND
,S
,SEC
SECONDS
SECS
: Сколько секунд с дробями осталось после приема часов и минут от микросекунд
Чтобы вернуть трехбуквенный акроним для дня недели, используйте функцию dayname.
Примеры
> SELECT extract(YEAR FROM TIMESTAMP '2019-08-12 01:00:00.123456');
2019
> SELECT extract(week FROM TIMESTAMP'2019-08-12 01:00:00.123456');
33
> SELECT extract(DAY FROM DATE'2019-08-12');
12
> SELECT extract(SECONDS FROM TIMESTAMP'2019-10-01 00:00:01.000001');
1.000001
> SELECT extract(MONTHS FROM INTERVAL '2-11' YEAR TO MONTH);
11
> SELECT extract(SECONDS FROM INTERVAL '5:00:30.001' HOUR TO SECOND);
30.001000