relx 0.1.0
A Modern C++23 Type-Safe SQL Query Builder
Loading...
Searching...
No Matches
date.hpp File Reference
#include "../schema/column.hpp"
#include "arithmetic.hpp"
#include "column_expression.hpp"
#include "condition.hpp"
#include "core.hpp"
#include "date_concepts.hpp"
#include "function.hpp"
#include "value.hpp"
#include <chrono>
#include <concepts>
#include <memory>
#include <optional>
#include <string>
#include <vector>

Go to the source code of this file.

Classes

class  relx::query::BinaryDateFunctionExpr< Left, Right >
 Binary date function expression (e.g., DATE_DIFF) More...
 
class  relx::query::UnaryDateFunctionExpr< Expr >
 Unary date function expression with unit (e.g., EXTRACT) More...
 
class  relx::query::IntervalExpr
 Date interval expression for date arithmetic. More...
 
class  relx::query::DateArithmeticExpr< DateExpr, IntervalExpr >
 Date addition/subtraction expression. More...
 
class  relx::query::CurrentDateTimeExpr
 Current date/time functions (no arguments) More...
 

Namespaces

namespace  relx
 relx database connection
 
namespace  relx::query
 

Functions

template<SqlExpr Expr1, SqlExpr Expr2>
auto relx::query::date_diff (std::string_view unit, Expr1 date1, Expr2 date2)
 DATE_DIFF function - calculates difference between two dates.
 
template<typename T1 , typename T2 >
requires date_checking::DateTimeColumn<T1> && date_checking::DateTimeColumn<T2>
auto relx::query::date_diff (std::string_view unit, const T1 &col1, const T2 &col2)
 
template<typename T , SqlExpr Expr>
requires date_checking::DateTimeColumn<T>
auto relx::query::date_diff (std::string_view unit, const T &column, Expr expr)
 
template<SqlExpr Expr, typename T >
requires date_checking::DateTimeColumn<T>
auto relx::query::date_diff (std::string_view unit, Expr expr, const T &column)
 
template<SqlExpr DateExpr>
auto relx::query::date_add (DateExpr date_expr, IntervalExpr interval_expr)
 DATE_ADD function - adds an interval to a date.
 
template<typename T >
requires date_checking::DateTimeColumn<T>
auto relx::query::date_add (const T &column, IntervalExpr interval_expr)
 
template<SqlExpr DateExpr>
auto relx::query::date_sub (DateExpr date_expr, IntervalExpr interval_expr)
 DATE_SUB function - subtracts an interval from a date.
 
template<typename T >
requires date_checking::DateTimeColumn<T>
auto relx::query::date_sub (const T &column, IntervalExpr interval_expr)
 
template<SqlExpr Expr>
auto relx::query::extract (std::string_view unit, Expr expr)
 EXTRACT function - extracts a date part from a date.
 
template<typename T >
requires date_checking::DateTimeColumn<T>
auto relx::query::extract (std::string_view unit, const T &column)
 
template<SqlExpr Expr>
auto relx::query::date_trunc (std::string_view unit, Expr expr)
 DATE_TRUNC function - truncates a date to specified precision.
 
template<typename T >
requires date_checking::DateTimeColumn<T>
auto relx::query::date_trunc (std::string_view unit, const T &column)
 
auto relx::query::interval (std::string_view interval_str)
 Create an interval expression.
 
auto relx::query::current_date ()
 CURRENT_DATE function - returns the current date.
 
auto relx::query::current_time ()
 CURRENT_TIME function - returns the current time.
 
auto relx::query::current_timestamp ()
 CURRENT_TIMESTAMP function - returns the current timestamp.
 
auto relx::query::now ()
 NOW function - alias for CURRENT_TIMESTAMP.
 
template<typename T >
requires date_checking::DateTimeColumn<T>
auto relx::query::age_in_years (const T &birth_date_column)
 Calculate age in years between birth date and current date.
 
template<SqlExpr Expr>
auto relx::query::age_in_years (Expr expr)
 
template<typename T >
requires date_checking::DateTimeColumn<T>
auto relx::query::days_since (const T &date_column)
 Calculate days since a date.
 
template<SqlExpr Expr>
auto relx::query::days_since (Expr expr)
 
template<typename T >
requires date_checking::DateTimeColumn<T>
auto relx::query::days_until (const T &date_column)
 Calculate days until a date.
 
template<SqlExpr Expr>
auto relx::query::days_until (Expr expr)
 
template<typename T >
requires date_checking::DateTimeColumn<T>
auto relx::query::start_of_year (const T &date_column)
 Get the start of the year for a date.
 
template<SqlExpr Expr>
auto relx::query::start_of_year (Expr expr)
 
template<typename T >
requires date_checking::DateTimeColumn<T>
auto relx::query::start_of_month (const T &date_column)
 Get the start of the month for a date.
 
template<SqlExpr Expr>
auto relx::query::start_of_month (Expr expr)
 
template<typename T >
requires date_checking::DateTimeColumn<T>
auto relx::query::start_of_day (const T &date_column)
 Get the start of the day for a date.
 
template<SqlExpr Expr>
auto relx::query::start_of_day (Expr expr)
 
template<typename T >
requires date_checking::DateTimeColumn<T>
auto relx::query::year (const T &date_column)
 Get the year from a date.
 
template<SqlExpr Expr>
auto relx::query::year (Expr expr)
 
template<typename T >
requires date_checking::DateTimeColumn<T>
auto relx::query::month (const T &date_column)
 Get the month from a date.
 
template<SqlExpr Expr>
auto relx::query::month (Expr expr)
 
template<typename T >
requires date_checking::DateTimeColumn<T>
auto relx::query::day (const T &date_column)
 Get the day from a date.
 
template<SqlExpr Expr>
auto relx::query::day (Expr expr)
 
template<typename T >
requires date_checking::DateTimeColumn<T>
auto relx::query::day_of_week (const T &date_column)
 Get the day of week from a date (0=Sunday, 1=Monday, etc.)
 
template<SqlExpr Expr>
auto relx::query::day_of_week (Expr expr)
 
template<typename T >
requires date_checking::DateTimeColumn<T>
auto relx::query::day_of_year (const T &date_column)
 Get the day of year from a date (1-366)
 
template<SqlExpr Expr>
auto relx::query::day_of_year (Expr expr)
 
template<typename T >
requires date_checking::DateTimeColumn<T>
auto relx::query::hour (const T &date_column)
 Get the hour from a timestamp.
 
template<SqlExpr Expr>
auto relx::query::hour (Expr expr)
 
template<typename T >
requires date_checking::DateTimeColumn<T>
auto relx::query::minute (const T &date_column)
 Get the minute from a timestamp.
 
template<SqlExpr Expr>
auto relx::query::minute (Expr expr)
 
template<typename T >
requires date_checking::DateTimeColumn<T>
auto relx::query::second (const T &date_column)
 Get the second from a timestamp.
 
template<SqlExpr Expr>
auto relx::query::second (Expr expr)
 
template<typename T >
requires date_checking::DateTimeColumn<T>
auto relx::query::operator+ (const T &date_column, const IntervalExpr &interval_expr)
 Addition operator for date column + interval.
 
template<SqlExpr DateExpr>
auto relx::query::operator+ (DateExpr date_expr, const IntervalExpr &interval_expr)
 Addition operator for date expression + interval.
 
template<typename T >
requires date_checking::DateTimeColumn<T>
auto relx::query::operator- (const T &date_column, const IntervalExpr &interval_expr)
 Subtraction operator for date column - interval.
 
template<SqlExpr DateExpr>
auto relx::query::operator- (DateExpr date_expr, const IntervalExpr &interval_expr)
 Subtraction operator for date expression - interval.
 
template<SqlExpr DateExpr, SqlExpr IntervalExpr1>
auto relx::query::operator+ (const DateArithmeticExpr< DateExpr, IntervalExpr1 > &date_expr, const IntervalExpr &interval_expr)
 Addition operator for DateArithmeticExpr + interval (chaining)
 
template<SqlExpr DateExpr, SqlExpr IntervalExpr1>
auto relx::query::operator- (const DateArithmeticExpr< DateExpr, IntervalExpr1 > &date_expr, const IntervalExpr &interval_expr)
 Subtraction operator for DateArithmeticExpr - interval (chaining)
 
template<SqlExpr Expr>
auto relx::query::abs (Expr expr)
 ABS function for SQL expressions.
 
template<SqlExpr Expr1, SqlExpr Expr2>
auto relx::query::operator- (const UnaryDateFunctionExpr< Expr1 > &left, const UnaryDateFunctionExpr< Expr2 > &right)
 Subtraction operator for two UnaryDateFunctionExpr.
 
template<SqlExpr Expr1, SqlExpr Expr2>
auto relx::query::operator+ (const UnaryDateFunctionExpr< Expr1 > &left, const UnaryDateFunctionExpr< Expr2 > &right)
 Addition operator for two UnaryDateFunctionExpr.