Временные функции
Функция | Описание |
|---|---|
Извлекает часть даты (или даты и времени), например «год», «месяц» и т. д. | |
Предоставляет те же возможности, что и | |
Форматирует временное значение (Datetime, Date или Time) в виде строки. |
DATE_PART
Извлекает часть даты (или даты и времени), например «год», «месяц» и т. д.
Поддерживаемые части/поля:
Часть | Описание | Тип данных |
|---|---|---|
‘millennium’, ‘millennia’ | Номер тысячелетия | Int32 |
‘century’, ‘centuries’, ‘c’ | Номер столетия | Int32 |
‘decade’, ‘decades’ | Номер десятилетия (год / 10) | Int32 |
‘isoyear’ | Номер года по ISO | Int32 |
‘year’, ‘years’, ‘y’ | Календарный год | Int32 |
‘quarter’, ‘quarters’ | Квартал года (1–4) | Int8 |
‘month’, ‘months’, ‘mon’, ‘mons’ | Месяц года (1–12) | Int8 |
‘dayofyear’, ‘doy’ | День года (1–366) | Int16 |
‘dayofweek’, ‘dow’, ‘weekday’ | День недели (0: воскресенье — 6: суббота) | Int8 |
‘isoweek’, ‘week’ | Номер недели по ISO (1–53) | Int8 |
‘isodow’ | День недели по ISO (1: понедельник — 7: воскресенье) | Int8 |
‘day’, ‘days’, ‘dayofmonth’, d’ | День месяца (1–31) | Int8 |
‘hour’, ‘hours’, ‘h’ | Час дня (0–23) | Int8 |
‘minute’, ‘minutes’, ‘mins’, ‘min’, ‘m’ | Минута часа (0–59) | Int8 |
‘second’, ‘seconds’, ‘sec’, ‘secs’, ‘s’ | Секунда минуты (0–59) | Int8 |
‘millisecond’, ‘milliseconds’, ‘ms’ | Секунды и миллисекунды внутри минуты (0–59999.) | Float64 |
‘microsecond’, ‘microseconds’, ‘us’ | Секунды и микросекунды внутри минуты (0–59999999.) | Float64 |
‘nanosecond’, ‘nanoseconds’, ‘ns’ | Секунды и наносекунды внутри минуты (0–59999999999.) | Float64 |
‘timezone’ | Смещение часового пояса относительно UTC в секундах () | Int64 |
‘time’ | Компонент времени | Time |
‘epoch’ | Количество секунд с начала эпохи Unix (1970-01-01) | Float64 |
Пример:
df = pl.DataFrame(
{
"dt": [
datetime(1969, 12, 31, 4, 30, 45, 123456),
datetime(2026, 7, 12, 10, 23, 59, 999999),
datetime(2077, 2, 10, 18, 10, 15, 654321),
]
}
)
df.sql("""
SELECT
dt,
DATE_PART('year', dt) AS year,
DATE_PART('month', dt) AS month,
DATE_PART('day', dt) AS day,
DATE_PART('ms', dt) AS secs_ms,
FROM self
""")
# shape: (3, 5)
# ┌────────────────────────────┬──────┬───────┬─────┬───────────┐
# │ dt ┆ year ┆ month ┆ day ┆ secs_ms │
# │ --- ┆ --- ┆ --- ┆ --- ┆ --- │
# │ datetime[μs] ┆ i32 ┆ i8 ┆ i8 ┆ f64 │
# ╞════════════════════════════╪══════╪═══════╪═════╪═══════════╡
# │ 1969-12-31 04:30:45.123456 ┆ 1969 ┆ 12 ┆ 31 ┆ 45123.456 │
# │ 2026-07-12 10:23:59.999999 ┆ 2026 ┆ 7 ┆ 12 ┆ 59999.999 │
# │ 2077-02-10 18:10:15.654321 ┆ 2077 ┆ 2 ┆ 10 ┆ 15654.321 │
# └────────────────────────────┴──────┴───────┴─────┴───────────┘
EXTRACT
Извлекает часть даты (или даты и времени), например «год», «месяц» и т. д.
Поддерживаемые части/поля:
Часть | Описание | Тип данных |
|---|---|---|
‘millennium’, ‘millennia’ | Номер тысячелетия | Int32 |
‘century’, ‘centuries’, ‘c’ | Номер столетия | Int32 |
‘decade’, ‘decades’ | Номер десятилетия (год / 10) | Int32 |
‘isoyear’ | Номер года по ISO | Int32 |
‘year’, ‘years’, ‘y’ | Календарный год | Int32 |
‘quarter’, ‘quarters’ | Квартал года (1–4) | Int8 |
‘month’, ‘months’, ‘mon’, ‘mons’ | Месяц года (1–12) | Int8 |
‘dayofyear’, ‘doy’ | День года (1–366) | Int16 |
‘dayofweek’, ‘dow’, ‘weekday’ | День недели (0: воскресенье — 6: суббота) | Int8 |
‘isoweek’, ‘week’ | Номер недели по ISO (1–53) | Int8 |
‘isodow’ | День недели по ISO (1: понедельник — 7: воскресенье) | Int8 |
‘day’, ‘days’, ‘dayofmonth’, d’ | День месяца (1–31) | Int8 |
‘hour’, ‘hours’, ‘h’ | Час дня (0–23) | Int8 |
‘minute’, ‘minutes’, ‘mins’, ‘min’, ‘m’ | Минута часа (0–59) | Int8 |
‘second’, ‘seconds’, ‘sec’, ‘secs’, ‘s’ | Секунда минуты (0–59) | Int8 |
‘millisecond’, ‘milliseconds’, ‘ms’ | Секунды и миллисекунды внутри минуты (0–59999.) | Float64 |
‘microsecond’, ‘microseconds’, ‘us’ | Секунды и микросекунды внутри минуты (0–59999999.) | Float64 |
‘nanosecond’, ‘nanoseconds’, ‘ns’ | Секунды и наносекунды внутри минуты (0–59999999999.) | Float64 |
‘timezone’ | Смещение часового пояса относительно UTC в секундах () | Int64 |
‘time’ | Компонент времени | Time |
‘epoch’ | Количество секунд с начала эпохи Unix (1970-01-01) | Float64 |
Пример:
df = pl.DataFrame(
{
"dt": [
date(1969, 12, 31),
date(2026, 8, 22),
date(2077, 2, 10),
],
}
)
df.sql("""
SELECT
dt,
EXTRACT(decade FROM dt) AS decade,
EXTRACT(year FROM dt) AS year,
EXTRACT(quarter FROM dt) AS quarter,
FROM self
""")
# shape: (3, 4)
# ┌────────────┬────────┬──────┬─────────┐
# │ dt ┆ decade ┆ year ┆ quarter │
# │ --- ┆ --- ┆ --- ┆ --- │
# │ date ┆ i32 ┆ i32 ┆ i8 │
# ╞════════════╪════════╪══════╪═════════╡
# │ 1969-12-31 ┆ 196 ┆ 1969 ┆ 4 │
# │ 2026-08-22 ┆ 202 ┆ 2026 ┆ 3 │
# │ 2077-02-10 ┆ 207 ┆ 2077 ┆ 1 │
# └────────────┴────────┴──────┴─────────┘
STRFTIME
Форматирует временное значение (Datetime, Date или Time) в виде строки с использованием строки формата, совместимой с chrono strftime.
df = pl.DataFrame(
{
"dt": [date(1978, 7, 5), None, date(2020, 4, 10)],
"tm": [time(10, 10, 10), time(22, 33, 55), None],
}
)
df.sql("""
SELECT
STRFTIME(dt, '%B %d, %Y') AS s_dt,
STRFTIME(tm, '%H.%M.%S') AS s_tm,
FROM self
""")
# shape: (3, 2)
# ┌────────────────┬──────────┐
# │ s_dt ┆ s_tm │
# │ --- ┆ --- │
# │ str ┆ str │
# ╞════════════════╪══════════╡
# │ July 05, 1978 ┆ 10.10.10 │
# │ null ┆ 22.33.55 │
# │ April 10, 2020 ┆ null │
# └────────────────┴──────────┘
© 2020 Ritchie Vink
© 2022 Polars contributors
Licensed under the MIT License.
https://docs.pola.rs/api/python/stable/reference/sql/functions/temporal.html