use nodedb_types::columnar::ColumnType;
use crate::functions::arg_types;
use crate::functions::registry::{FunctionCategory::Scalar, FunctionMeta, SearchTrigger};
use super::super::helpers::{m, no_trigger};
pub(super) fn datetime_functions() -> Vec<FunctionMeta> {
vec![
m(
"time_bucket",
Scalar,
2,
2,
SearchTrigger::TimeBucket,
Some(ColumnType::Timestamp),
arg_types::TIME_BUCKET_ARGS,
),
m(
"now",
Scalar,
0,
0,
no_trigger(),
Some(ColumnType::Timestamptz),
arg_types::NO_ARGS,
)
.volatile(),
m(
"current_timestamp",
Scalar,
0,
0,
no_trigger(),
Some(ColumnType::Timestamptz),
arg_types::NO_ARGS,
)
.volatile(),
m(
"datetime",
Scalar,
1,
1,
no_trigger(),
Some(ColumnType::String),
arg_types::DATETIME_1_ARGS,
),
m(
"to_datetime",
Scalar,
1,
1,
no_trigger(),
Some(ColumnType::String),
arg_types::DATETIME_1_ARGS,
),
m(
"unix_secs",
Scalar,
1,
1,
no_trigger(),
Some(ColumnType::Int64),
arg_types::DATETIME_1_ARGS,
),
m(
"epoch_secs",
Scalar,
1,
1,
no_trigger(),
Some(ColumnType::Int64),
arg_types::DATETIME_1_ARGS,
),
m(
"unix_millis",
Scalar,
1,
1,
no_trigger(),
Some(ColumnType::Int64),
arg_types::DATETIME_1_ARGS,
),
m(
"epoch_millis",
Scalar,
1,
1,
no_trigger(),
Some(ColumnType::Int64),
arg_types::DATETIME_1_ARGS,
),
m(
"extract",
Scalar,
2,
2,
no_trigger(),
Some(ColumnType::Int64),
arg_types::DATE_PART_ARGS,
),
m(
"date_part",
Scalar,
2,
2,
no_trigger(),
Some(ColumnType::Int64),
arg_types::DATE_PART_ARGS,
),
m(
"date_trunc",
Scalar,
2,
2,
no_trigger(),
Some(ColumnType::String),
arg_types::DATE_PART_ARGS,
),
m(
"datetrunc",
Scalar,
2,
2,
no_trigger(),
Some(ColumnType::String),
arg_types::DATE_PART_ARGS,
),
m(
"date_add",
Scalar,
2,
2,
no_trigger(),
Some(ColumnType::String),
arg_types::DATE_ARITH_ARGS,
),
m(
"datetime_add",
Scalar,
2,
2,
no_trigger(),
Some(ColumnType::String),
arg_types::DATE_ARITH_ARGS,
),
m(
"date_sub",
Scalar,
2,
2,
no_trigger(),
Some(ColumnType::String),
arg_types::DATE_ARITH_ARGS,
),
m(
"datetime_sub",
Scalar,
2,
2,
no_trigger(),
Some(ColumnType::String),
arg_types::DATE_ARITH_ARGS,
),
m(
"date_diff",
Scalar,
2,
2,
no_trigger(),
None,
arg_types::DATE_DIFF_ARGS,
),
m(
"datediff",
Scalar,
2,
2,
no_trigger(),
None,
arg_types::DATE_DIFF_ARGS,
),
m(
"duration",
Scalar,
1,
1,
no_trigger(),
Some(ColumnType::String),
arg_types::DATETIME_1_ARGS,
),
m(
"to_duration",
Scalar,
1,
1,
no_trigger(),
Some(ColumnType::String),
arg_types::DATETIME_1_ARGS,
),
m(
"decimal",
Scalar,
1,
1,
no_trigger(),
Some(ColumnType::String),
arg_types::DATETIME_1_ARGS,
),
m(
"to_decimal",
Scalar,
1,
1,
no_trigger(),
Some(ColumnType::String),
arg_types::DATETIME_1_ARGS,
),
]
}