Class DateTimeSubtractInterval
- Namespace
- YndigoBlue.Velocity.Functions
- Assembly
- YndigoBlue.Velocity.dll
Represents a function that subtracts a TimeSpan/Interval value from a DateTime, returning a new DateTime.
public class DateTimeSubtractInterval : Function, ICheckItem, IDefaultItem, IFilterItem, IElement
- Inheritance
-
DateTimeSubtractInterval
- Implements
Remarks
DateTimeSubtractInterval(datetime, interval) → datetime shifted back by the interval duration.
Both arguments may be column references or literal values. To add an interval instead, use DateTimeAddInterval.
Databases that store intervals as native types (PostgreSQL, Oracle, Teradata) emit simple
datetime - interval subtraction. Databases that store intervals as 64-bit tick counts
(SQL Server, MySQL, DB2, SQLite) emit the equivalent negated tick-to-second conversion arithmetic.
Examples
Shift each task deadline back by the delay duration stored in the delay column:
var schema = manager.LoadSchema("projects");
var tasks = schema["tasks"];
var query = new Query()
.Select([ tasks["id"], new Expression("original_deadline", new DateTimeSubtractInterval(tasks["adjusted_deadline"], tasks["delay"])) ])
.From(tasks);
var results = manager.Retrieve(query);
Use the column + TimeSpan constructor to subtract a fixed duration from each datetime column:
var schema = manager.LoadSchema("projects");
var tasks = schema["tasks"];
Column deadlineColumn = tasks["deadline"];
// Remove the 2-hour grace period that was added to every deadline
var gracePeriod = TimeSpan.FromHours(2);
var query = new Query()
.Select([ tasks["id"], new Expression("original_deadline", new DateTimeSubtractInterval(deadlineColumn, gracePeriod)) ])
.From(tasks);
var results = manager.Retrieve(query);
Use the DateTime + TimeSpan constructor to subtract a fixed interval from a literal datetime:
var adjustedDateTime = new DateTime(2024, 6, 1, 11, 30, 0);
var offset = TimeSpan.FromMinutes(90);
// Returns 2024-06-01 10:00:00 (90 minutes before the adjusted time)
var expr = new DateTimeSubtractInterval(adjustedDateTime, offset);
Constructors
- DateTimeSubtractInterval(DateTime, TimeSpan)
Initializes a new instance of DateTimeSubtractInterval with a DateTime literal and a TimeSpan literal.
- DateTimeSubtractInterval(DateTime, Column)
Initializes a new instance of DateTimeSubtractInterval with a DateTime literal and an interval column.
- DateTimeSubtractInterval(IElement, IElement)
Initializes a new instance of DateTimeSubtractInterval.
- DateTimeSubtractInterval(Column, TimeSpan)
Initializes a new instance of DateTimeSubtractInterval with a DateTime column and a TimeSpan literal.
- DateTimeSubtractInterval(Column, Column)
Initializes a new instance of DateTimeSubtractInterval with both arguments as columns.