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.