public static bool TryGetExpression(SqlToken sql, out IExpression expr) { switch (sql.Type) { case SqlType.Number: var result = TryGetNumberLiteral(sql.Text, out ILiteral literal); expr = literal; return(result); case SqlType.String: var value = sql.Text.Substring(1, sql.Text.Length - 2).Replace("''", "'"); if (DateTime.TryParse(value, out var date)) { expr = new DateTimeLiteral(date); } else { expr = new StringLiteral(value); } return(true); default: expr = null; return(false); } }
public override void Visit(DateTimeLiteral op) { if (op.Value.TimeOfDay.TotalMilliseconds > 0) { Writer.Write("TIMESTAMP'"); Writer.Write(Context.Format(op.Value).Replace('T', ' ')); Writer.Write('\''); } else { Writer.Write("DATE'"); Writer.Write(Context.Format(op.Value).Substring(0, 10)); Writer.Write('\''); } }
public void Visit(DateTimeLiteral op) { if (_version.OnlySupportsV2OrV3()) { WriteEncoded("datetime'"); WriteEncoded(_context.AsZonedDateTime(op.Value).Value.ZoneDateTime.ToString("s")); WriteEncoded("'"); } else { if (op.Value.TimeOfDay.Equals(TimeSpan.Zero)) { WriteEncoded(_context.AsZonedDateTime(op.Value).Value.ZoneDateTime.ToString("yyyy-MM-dd")); } else if (SupportsUtcDates) { WriteEncoded(_context.AsZonedDateTime(op.Value).Value.UtcDateTime.ToString("s") + "Z"); } else { WriteEncoded(_context.AsZonedDateTime(op.Value).Value.ZoneDateTime.ToString("s")); } } }
public virtual void Visit(DateTimeLiteral op) { Writer.Write('\''); Writer.Write(Context.Format(op.Value)); Writer.Write('\''); }
public virtual void Visit(DateTimeLiteral op) { }
public void Visit(DateTimeLiteral op) { _conditionWriter.WriteElementString("constant", _context.Format(op.Value)); }
public virtual IExpression Clone(DateTimeLiteral op) { return(new DateTimeLiteral(op.Value)); }
void IExpressionVisitor.Visit(DateTimeLiteral op) { _clone = Clone(op); }
public static bool TryGetLiteral(object value, out ILiteral literal) { literal = null; if (value is bool b) { literal = new BooleanLiteral(b); } else if (value is byte by) { literal = new IntegerLiteral(by); } else if (value is sbyte sb) { literal = new IntegerLiteral(sb); } else if (value is short sh) { literal = new IntegerLiteral(sh); } else if (value is ushort us) { literal = new IntegerLiteral(us); } else if (value is int i) { literal = new IntegerLiteral(i); } else if (value is uint ui) { literal = new IntegerLiteral(ui); } else if (value is long l) { literal = new IntegerLiteral(l); } else if (value is ulong ul) { literal = new IntegerLiteral((long)ul); } else if (value is float f) { literal = new FloatLiteral(f); } else if (value is double d) { literal = new FloatLiteral(d); } else if (value is DateTime dt) { literal = new DateTimeLiteral(dt); } else if (value is Guid g) { literal = new StringLiteral(g.ToArasId()); } else if (value is string str) { literal = new StringLiteral(str); } else { return(false); } return(true); }