コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
 protected abstract void VisitDatePartFunctionToken(DatePartFunctionToken token);
コード例 #4
0
        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);
        }