Table of Contents

Class DateTimeAddInterval

Namespace
YndigoBlue.Velocity.Functions
Assembly
YndigoBlue.Velocity.dll

Represents a function that adds a TimeSpan/Interval value to a DateTime, returning a new DateTime.

public class DateTimeAddInterval : Function, ICheckItem, IDefaultItem, IFilterItem, IElement
Inheritance
DateTimeAddInterval
Implements

Remarks

DateTimeAddInterval(datetime, interval) → datetime shifted by the interval duration.

Both arguments may be column references or literal values. The interval is treated as a signed duration — a negative interval subtracts from the datetime.

Databases that store intervals as native types (PostgreSQL, Oracle, Teradata) emit simple datetime + interval addition. Databases that store intervals as 64-bit tick counts (SQL Server, MySQL, DB2, SQLite) emit the equivalent tick-to-second conversion arithmetic.

Examples

Shift each task deadline by the duration stored in the delay column:

var schema = manager.LoadSchema("projects");
var tasks = schema["tasks"];

var query = new Query()
    .Select([ tasks["id"], new Expression("adjusted_deadline", new DateTimeAddInterval(tasks["deadline"], tasks["delay"])) ])
    .From(tasks);

var results = manager.Retrieve(query);

Use the column + TimeSpan constructor to add a fixed duration to each deadline:

var schema = manager.LoadSchema("projects");
var tasks = schema["tasks"];
Column deadlineColumn = tasks["deadline"];

// Add a 2-hour grace period to every deadline
var gracePeriod = TimeSpan.FromHours(2);

var query = new Query()
    .Select([ tasks["id"], new Expression("extended_deadline", new DateTimeAddInterval(deadlineColumn, gracePeriod)) ])
    .From(tasks);

var results = manager.Retrieve(query);

Use the DateTime + TimeSpan constructor to add a fixed interval to a literal datetime:

var baseDateTime = new DateTime(2024, 6, 1, 9, 0, 0);
var offset = TimeSpan.FromMinutes(90);

// Returns the datetime 90 minutes after 2024-06-01 09:00:00
var expr = new DateTimeAddInterval(baseDateTime, offset);

Constructors

DateTimeAddInterval(DateTime, TimeSpan)

Initializes a new instance of DateTimeAddInterval with a DateTime literal and a TimeSpan literal.

DateTimeAddInterval(DateTime, Column)

Initializes a new instance of DateTimeAddInterval with a DateTime literal and an interval column.

DateTimeAddInterval(IElement, IElement)

Initializes a new instance of DateTimeAddInterval.

DateTimeAddInterval(Column, TimeSpan)

Initializes a new instance of DateTimeAddInterval with a DateTime column and a TimeSpan literal.

DateTimeAddInterval(Column, Column)

Initializes a new instance of DateTimeAddInterval with both arguments as columns.