Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
 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('\'');
     }
 }
Exemplo n.º 3
0
 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"));
         }
     }
 }
Exemplo n.º 4
0
 public virtual void Visit(DateTimeLiteral op)
 {
     Writer.Write('\'');
     Writer.Write(Context.Format(op.Value));
     Writer.Write('\'');
 }
Exemplo n.º 5
0
 public virtual void Visit(DateTimeLiteral op)
 {
 }
 public void Visit(DateTimeLiteral op)
 {
     _conditionWriter.WriteElementString("constant", _context.Format(op.Value));
 }
Exemplo n.º 7
0
 public virtual IExpression Clone(DateTimeLiteral op)
 {
     return(new DateTimeLiteral(op.Value));
 }
Exemplo n.º 8
0
 void IExpressionVisitor.Visit(DateTimeLiteral op)
 {
     _clone = Clone(op);
 }
Exemplo n.º 9
0
        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);
        }