class Sequel::SQL::DateAdd

The DateAdd class represents the addition of an interval to a date/timestamp expression.

Attributes

cast_type[R]

The type to cast the expression to. nil if not overridden, in which cast the generic timestamp type for the database will be used.

expr[R]

The expression that the interval is being added to.

interval[R]

The interval added to the expression, as a hash with symbol keys.

Public Class Methods

new(expr, interval, opts=OPTS) click to toggle source

Supports two types of intervals:

Hash

Used directly, but values cannot be plain strings.

ActiveSupport::Duration

Converted to a hash using the interval's parts.

    # File lib/sequel/extensions/date_arithmetic.rb
187 def initialize(expr, interval, opts=OPTS)
188   @expr = expr
189   @interval = if interval.is_a?(Hash)
190     interval.each_value do |v|
191        # Attempt to prevent SQL injection by users who pass untrusted strings
192        # as interval values.
193        if v.is_a?(String) && !v.is_a?(LiteralString)
194          raise Sequel::InvalidValue, "cannot provide String value as interval part: #{v.inspect}"
195        end
196     end
197     Hash[interval]
198   else
199     h = Hash.new(0)
200     interval.parts.each{|unit, value| h[unit] += value}
201     Hash[h]
202   end
203 
204   @interval.freeze
205   @cast_type = opts[:cast] if opts[:cast]
206   freeze
207 end