时间#

函数

描述

DATE_PART

提取日期(或日期时间)的一部分,如‘年’、‘月’等。

EXTRACT

提供与DATE_PART相同的功能,但语法略有不同。

STRFTIME

将时间值(Datetime、Date 或 Time)格式化为字符串。

DATE_PART#

提取日期(或日期时间)的一部分,如‘年’、‘月’等。

Supported parts/fields:
  • “千年” | “千年”

  • “世纪” | “世纪”

  • “十年” | “几十年”

  • “isoyear”

  • “年” | “年” | “y”

  • “季度” | “季度”

  • “月” | “月份” | “月” | “月份”

  • “一年中的第几天” | “doy”

  • “星期几” | “dow”

  • “isoweek” | “week”

  • “isodow”

  • “天” | “天数” | “d”

  • “小时” | “小时” | “h”

  • “分钟” | “分钟” | “分钟” | “分钟” | “分钟”

  • “秒” | “秒” | “秒” | “秒” | “秒”

  • “毫秒” | “毫秒” | “ms”

  • “微秒” | “微秒” | “us”

  • “纳秒” | “纳秒” | “ns”

  • “时区”

  • “时间”

  • “epoch”

示例:

df = pl.DataFrame(
  {
      "dt": [
          date(1969, 12, 31),
          date(2026, 8, 22),
          date(2077, 2, 10),
      ]
  }
)
df.sql("""
  SELECT
    dt,
    DATE_PART('year', dt) AS year,
    DATE_PART('month', dt) AS month,
    DATE_PART('day', dt) AS day
  FROM self
""")
# shape: (3, 4)
# ┌────────────┬──────┬───────┬─────┐
# │ dt         ┆ year ┆ month ┆ day │
# │ ---        ┆ ---  ┆ ---   ┆ --- │
# │ date       ┆ i32  ┆ i8    ┆ i8  │
# ╞════════════╪══════╪═══════╪═════╡
# │ 1969-12-31 ┆ 1969 ┆ 12    ┆ 31  │
# │ 2026-08-22 ┆ 2026 ┆ 8     ┆ 22  │
# │ 2077-02-10 ┆ 2077 ┆ 2     ┆ 10  │
# └────────────┴──────┴───────┴─────┘

提取#

提取日期(或日期时间)的一部分,如‘年’、‘月’等。

Supported parts/fields:
  • “千年” | “千年”

  • “世纪” | “世纪”

  • “十年” | “几十年”

  • “isoyear”

  • “年” | “年” | “y”

  • “季度” | “季度”

  • “月” | “月份” | “月” | “月份”

  • “一年中的第几天” | “doy”

  • “星期几” | “dow”

  • “isoweek” | “week”

  • “isodow”

  • “天” | “天数” | “d”

  • “小时” | “小时” | “h”

  • “分钟” | “分钟” | “分钟” | “分钟” | “分钟”

  • “秒” | “秒” | “秒” | “秒” | “秒”

  • “毫秒” | “毫秒” | “ms”

  • “微秒” | “微秒” | “us”

  • “纳秒” | “纳秒” | “ns”

  • “时区”

  • “时间”

  • “epoch”

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#

使用与chrono strftime兼容的格式化字符串将时间值(Datetime、Date 或 Time)格式化为字符串。

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     │
# └────────────────┴──────────┘