protected override void VisitDateAddFunctionToken(DateAddFunctionToken token) { State.Write(Symbols.OpenParenthesis); VisitToken(token.Token); if (token.Subtract) { State.Write(Symbols.MinusVal); } else { State.Write(Symbols.PlusVal); } State.Write(Symbols.INTERVAL); VisitToken(token.Number); if (token.DatePart == DatePart.Millisecond) { State.Write(Symbols.DIV); State.Write(MySqlSymbols.milisecondInSecond); } switch (token.DatePart) { case DatePart.Day: State.Write(MySqlSymbols.DAY); break; case DatePart.Year: State.Write(MySqlSymbols.YEAR); break; case DatePart.Month: State.Write(MySqlSymbols.MONTH); break; case DatePart.Week: State.Write(MySqlSymbols.WEEK); break; case DatePart.Hour: State.Write(MySqlSymbols.HOUR); break; case DatePart.Minute: State.Write(MySqlSymbols.MINUTE); break; case DatePart.Second: State.Write(MySqlSymbols.SECOND); break; case DatePart.Millisecond: State.Write(MySqlSymbols.MICROSECOND); break; } State.Write(Symbols.CloseParenthesis); }
protected override void VisitDateAddFunctionToken(DateAddFunctionToken token) { State.Write(Symbols.DATEADD); State.Write(Symbols.OpenParenthesis); switch (token.DatePart) { case DatePart.Day: State.Write(PostgrSQLSymbols.d); break; case DatePart.Year: State.Write(PostgrSQLSymbols.yy); break; case DatePart.Month: State.Write(PostgrSQLSymbols.m); break; case DatePart.Week: State.Write(PostgrSQLSymbols.ww); break; case DatePart.Hour: State.Write(PostgrSQLSymbols.hh); break; case DatePart.Minute: State.Write(PostgrSQLSymbols.mi); break; case DatePart.Second: State.Write(PostgrSQLSymbols.ss); break; case DatePart.Millisecond: State.Write(PostgrSQLSymbols.ms); break; } State.Write(Symbols.Comma); VisitToken(token.Subtract ? new UnaryMinusToken { Token = token.Number } : token.Number); State.Write(Symbols.Comma); VisitToken(token.Token); State.Write(Symbols.CloseParenthesis); }
protected override void VisitDateAddFunctionToken(DateAddFunctionToken token) { string temp = string.Empty; VisitToken(token.Token); if (token.Subtract) { State.Write(Symbols.MinusVal); } else { State.Write(Symbols.PlusVal); } State.Write(Symbols.INTERVAL); State.Write(Symbols.SingleQuote); VisitToken((Scalar)token.Number); //VisitToken(Scalar)token.Number).Value); switch (token.DatePart) { case DatePart.Day: State.Write(PostgrSQLSymbols.d); break; case DatePart.Year: State.Write(PostgrSQLSymbols.yy); break; case DatePart.Month: State.Write(PostgrSQLSymbols.m); break; case DatePart.Week: State.Write(PostgrSQLSymbols.ww); break; case DatePart.Hour: State.Write(PostgrSQLSymbols.hh); break; case DatePart.Minute: State.Write(PostgrSQLSymbols.mi); break; case DatePart.Second: State.Write(PostgrSQLSymbols.ss); break; case DatePart.Millisecond: State.Write(PostgrSQLSymbols.ms); break; } State.Write(Symbols.SingleQuote); }
protected abstract void VisitDateAddFunctionToken(DateAddFunctionToken token);
protected override void VisitDateAddFunctionToken(DateAddFunctionToken token) { //,datetime(datetime('now'),CAST( CAST(-5 AS INTEGER) * 7 as TEXT)||' day') State.Write(SqliteSymbols.datetime); State.Write(Symbols.OpenParenthesis); State.Write(Symbols.CAST); State.Write(Symbols.OpenParenthesis); State.Write(Symbols.CAST); State.Write(Symbols.OpenParenthesis); VisitToken(token.Subtract ? new UnaryMinusToken { Token = token.Number } : token.Number); State.Write(Symbols.AS); State.Write(SqliteSymbols.INTEGER); State.Write(Symbols.CloseParenthesis); switch (token.DatePart) { case DatePart.Week: State.Write(" * 7"); break; case DatePart.Millisecond: State.Write(" / 100.0"); break; } State.Write(Symbols.AS); State.Write(SqliteSymbols.TEXT); State.Write(Symbols.CloseParenthesis); State.Write(SqliteSymbols.Concat); State.Write(Symbols.SingleQuote); State.Write(Symbols.Space); switch (token.DatePart) { case DatePart.Day: case DatePart.Week: State.Write(SqliteSymbols.days); break; case DatePart.Year: State.Write(SqliteSymbols.years); break; case DatePart.Month: State.Write(SqliteSymbols.months); break; case DatePart.Hour: State.Write(SqliteSymbols.hours); break; case DatePart.Minute: State.Write(SqliteSymbols.minutes); break; case DatePart.Second: case DatePart.Millisecond: State.Write(SqliteSymbols.seconds); break; } State.Write(Symbols.SingleQuote); State.Write(Symbols.CloseParenthesis); }