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