protected override void VisitDatePartFunctionToken(DatePartFunctionToken token) { 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.AddToTheEnd(Symbols.OpenParenthesis); VisitToken(token.Token); State.Write(Symbols.CloseParenthesis); if (token.DatePart == DatePart.Millisecond) { State.Write(Symbols.DIV); State.Write(MySqlSymbols.milisecondInSecond); } }
protected override void VisitDatePartFunctionToken(DatePartFunctionToken token) { if (token.DatePart != DatePart.Millisecond) { State.Write(PostgrSQLSymbols.DATEPART); State.Write(Symbols.OpenParenthesis); switch (token.DatePart) { case DatePart.Day: State.Write(this.AddSingleQuotes(PostgrSQLSymbols.d)); break; case DatePart.Year: State.Write(this.AddSingleQuotes(PostgrSQLSymbols.yy)); break; case DatePart.Month: State.Write(this.AddSingleQuotes(PostgrSQLSymbols.m)); break; case DatePart.Week: State.Write(this.AddSingleQuotes(PostgrSQLSymbols.ww)); break; case DatePart.Hour: State.Write(this.AddSingleQuotes(PostgrSQLSymbols.hh)); break; case DatePart.Minute: State.Write(this.AddSingleQuotes(PostgrSQLSymbols.mi)); break; case DatePart.Second: State.Write(this.AddSingleQuotes(PostgrSQLSymbols.ss)); break; } State.Write(Symbols.Comma); VisitToken(token.Token); State.Write(Symbols.CloseParenthesis); } else { State.Write(Symbols.OpenParenthesis); State.Write(PostgrSQLSymbols.TRUNC); State.Write(Symbols.OpenParenthesis); State.Write(PostgrSQLSymbols.DATEPART); State.Write(Symbols.OpenParenthesis); State.Write(this.AddSingleQuotes(PostgrSQLSymbols.ms)); State.Write(Symbols.Comma); VisitToken(token.Token); State.Write(Symbols.CloseParenthesis); State.Write(Symbols.DivideVal); State.Write(PostgrSQLSymbols.milisecondInSecond); State.Write(Symbols.CloseParenthesis); State.Write(Symbols.CloseParenthesis); } }
protected abstract void VisitDatePartFunctionToken(DatePartFunctionToken token);
protected override void VisitDatePartFunctionToken(DatePartFunctionToken token) { State.Write(Symbols.CAST); State.Write(Symbols.OpenParenthesis); State.Write(SqliteSymbols.strftime); State.Write(Symbols.OpenParenthesis); State.Write(Symbols.SingleQuote); State.Write(Symbols.ModuloVal); switch (token.DatePart) { case DatePart.Day: State.Write(SqliteSymbols.d); break; case DatePart.Year: State.Write(SqliteSymbols.Y); break; case DatePart.Month: State.Write(SqliteSymbols.m); break; case DatePart.Week: State.Write(SqliteSymbols.W); break; case DatePart.Hour: State.Write(SqliteSymbols.H); break; case DatePart.Minute: State.Write(SqliteSymbols.M); break; case DatePart.Second: State.Write(SqliteSymbols.S); break; case DatePart.Millisecond: State.Write(SqliteSymbols.f); State.Write(Symbols.SingleQuote); State.Write(Symbols.Comma); VisitToken(token.Token); State.Write(Symbols.CloseParenthesis); State.Write(Symbols.MinusVal); State.Write(SqliteSymbols.floor); State.Write(Symbols.OpenParenthesis); State.Write(SqliteSymbols.strftime); State.Write(Symbols.OpenParenthesis); State.Write(Symbols.SingleQuote); State.Write(Symbols.ModuloVal); State.Write(Symbols.SingleQuote); State.Write(Symbols.Comma); VisitToken(token.Token); State.Write(Symbols.CloseParenthesis); State.Write(Symbols.CloseParenthesis); State.Write(Symbols.AS); State.Write(SqliteSymbols.INTEGER); State.Write(Symbols.CloseParenthesis); return; } State.Write(Symbols.SingleQuote); State.Write(Symbols.Comma); VisitToken(token.Token); State.Write(Symbols.CloseParenthesis); State.Write(Symbols.AS); State.Write(SqliteSymbols.INTEGER); State.Write(Symbols.CloseParenthesis); }