Path: blob/main/crates/polars-plan/src/dsl/function_expr/datetime.rs
8384 views
use super::*;12#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]3#[cfg_attr(feature = "dsl-schema", derive(schemars::JsonSchema))]4#[derive(Clone, PartialEq, Debug, Eq, Hash)]5pub enum TemporalFunction {6Millennium,7Century,8Year,9IsLeapYear,10IsoYear,11Quarter,12Month,13DaysInMonth,14Week,15WeekDay,16Day,17OrdinalDay,18Time,19Date,20Datetime,21#[cfg(feature = "dtype-duration")]22Duration(TimeUnit),23Hour,24Minute,25Second,26Millisecond,27Microsecond,28Nanosecond,29#[cfg(feature = "dtype-duration")]30TotalDays {31fractional: bool,32},33#[cfg(feature = "dtype-duration")]34TotalHours {35fractional: bool,36},37#[cfg(feature = "dtype-duration")]38TotalMinutes {39fractional: bool,40},41#[cfg(feature = "dtype-duration")]42TotalSeconds {43fractional: bool,44},45#[cfg(feature = "dtype-duration")]46TotalMilliseconds {47fractional: bool,48},49#[cfg(feature = "dtype-duration")]50TotalMicroseconds {51fractional: bool,52},53#[cfg(feature = "dtype-duration")]54TotalNanoseconds {55fractional: bool,56},57ToString(String),58CastTimeUnit(TimeUnit),59WithTimeUnit(TimeUnit),60#[cfg(feature = "timezones")]61ConvertTimeZone(TimeZone),62TimeStamp(TimeUnit),63Truncate,64#[cfg(feature = "offset_by")]65OffsetBy,66#[cfg(feature = "month_start")]67MonthStart,68#[cfg(feature = "month_end")]69MonthEnd,70#[cfg(feature = "timezones")]71BaseUtcOffset,72#[cfg(feature = "timezones")]73DSTOffset,74Round,75Replace,76#[cfg(feature = "timezones")]77ReplaceTimeZone(Option<TimeZone>, NonExistent),78Combine(TimeUnit),79DatetimeFunction {80time_unit: TimeUnit,81time_zone: Option<TimeZone>,82},83}8485impl Display for TemporalFunction {86fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {87use TemporalFunction::*;88let s = match self {89Millennium => "millennium",90Century => "century",91Year => "year",92IsLeapYear => "is_leap_year",93IsoYear => "iso_year",94Quarter => "quarter",95Month => "month",96DaysInMonth => "days_in_month",97Week => "week",98WeekDay => "weekday",99Day => "day",100OrdinalDay => "ordinal_day",101Time => "time",102Date => "date",103Datetime => "datetime",104#[cfg(feature = "dtype-duration")]105Duration(_) => "duration",106Hour => "hour",107Minute => "minute",108Second => "second",109Millisecond => "millisecond",110Microsecond => "microsecond",111Nanosecond => "nanosecond",112#[cfg(feature = "dtype-duration")]113TotalDays { .. } => "total_days",114#[cfg(feature = "dtype-duration")]115TotalHours { .. } => "total_hours",116#[cfg(feature = "dtype-duration")]117TotalMinutes { .. } => "total_minutes",118#[cfg(feature = "dtype-duration")]119TotalSeconds { .. } => "total_seconds",120#[cfg(feature = "dtype-duration")]121TotalMilliseconds { .. } => "total_milliseconds",122#[cfg(feature = "dtype-duration")]123TotalMicroseconds { .. } => "total_microseconds",124#[cfg(feature = "dtype-duration")]125TotalNanoseconds { .. } => "total_nanoseconds",126ToString(_) => "to_string",127#[cfg(feature = "timezones")]128ConvertTimeZone(_) => "convert_time_zone",129CastTimeUnit(_) => "cast_time_unit",130WithTimeUnit(_) => "with_time_unit",131TimeStamp(tu) => return write!(f, "dt.timestamp({tu})"),132Truncate => "truncate",133#[cfg(feature = "offset_by")]134OffsetBy => "offset_by",135#[cfg(feature = "month_start")]136MonthStart => "month_start",137#[cfg(feature = "month_end")]138MonthEnd => "month_end",139#[cfg(feature = "timezones")]140BaseUtcOffset => "base_utc_offset",141#[cfg(feature = "timezones")]142DSTOffset => "dst_offset",143Round => "round",144Replace => "replace",145#[cfg(feature = "timezones")]146ReplaceTimeZone(_, _) => "replace_time_zone",147DatetimeFunction { .. } => return write!(f, "dt.datetime"),148Combine(_) => "combine",149};150write!(f, "dt.{s}")151}152}153154155