Esempio n. 1
0
        protected override string CompileBasicDateCondition(SqlResult context, BasicDateCondition condition)
        {
            string column = wrapper.Wrap(condition.Column);

            string left;

            if (condition.Part == "time")
            {
                left = $"CAST({column} as TIME)";
            }
            else if (condition.Part == "date")
            {
                left = $"CAST({column} as DATE)";
            }
            else
            {
                left = $"EXTRACT({condition.Part.ToUpperInvariant()} FROM {column})";
            }

            string sql = $"{left} {condition.Operator} {Parameter(context, condition.Value)}";

            if (condition.IsNot)
            {
                return($"NOT ({sql})");
            }

            return(sql);
        }
        protected override string CompileBasicDateCondition(SqlResult ctx, BasicDateCondition condition)
        {
            var column = Wrap(condition.Column);

            string left;

            if (condition.Part == "time")
            {
                left = $"{column}::time";
            }
            else if (condition.Part == "date")
            {
                left = $"{column}::date";
            }
            else
            {
                left = $"DATE_PART('{condition.Part.ToUpperInvariant()}', {column})";
            }

            var sql = $"{left} {condition.Operator} {Parameter(ctx, condition.Value)}";

            if (condition.IsNot)
            {
                return($"NOT ({sql})");
            }

            return(sql);
        }
Esempio n. 3
0
        protected override string CompileBasicDateCondition(SqlResult ctx, BasicDateCondition condition)
        {
            var column = Wrap(condition.Column);
            var part   = condition.Part.ToUpper();

            string left;

            if (part == "TIME" || part == "DATE")
            {
                left = $"CAST({column} AS {part.ToUpper()})";
            }
            else
            {
                left = $"DATEPART({part.ToUpper()}, {column})";
            }

            var sql = $"{left} {condition.Operator} {Parameter(ctx, condition.Value)}";

            if (condition.IsNot)
            {
                return($"NOT ({sql})");
            }

            return(sql);
        }
Esempio n. 4
0
        protected override string CompileBasicDateCondition(SqlResult ctx, BasicDateCondition condition)
        {
            var column = Wrap(condition.Column);
            var value  = Parameter(ctx, condition.Value);

            var formatMap = new Dictionary <string, string> {
                { "date", "%Y-%m-%d" },
                { "time", "%H:%M:%S" },
                { "year", "%Y" },
                { "month", "%m" },
                { "day", "%d" },
                { "hour", "%H" },
                { "minute", "%M" },
            };

            if (!formatMap.ContainsKey(condition.Part))
            {
                return($"{column} {condition.Operator} {value}");
            }

            var sql = $"strftime('{formatMap[condition.Part]}', {column}) {condition.Operator} cast({value} as text)";

            if (condition.IsNot)
            {
                return($"NOT ({sql})");
            }

            return(sql);
        }
Esempio n. 5
0
        protected override string CompileBasicDateCondition(SqlResult context, BasicDateCondition condition)
        {
            string column = wrapper.Wrap(condition.Column);
            string part   = condition.Part.ToUpperInvariant();

            string left;

            if (part == "TIME" || part == "DATE")
            {
                left = $"CAST({column} AS {part.ToUpperInvariant()})";
            }
            else
            {
                left = $"DATEPART({part.ToUpperInvariant()}, {column})";
            }

            string sql = $"{left} {condition.Operator} {Parameter(context, condition.Value)}";

            if (condition.IsNot)
            {
                sql = $"NOT ({sql})";
            }

            return(sql);
        }
Esempio n. 6
0
        protected override string CompileBasicDateCondition(BasicDateCondition condition)
        {
            var column = Wrap(condition.Column);

            string left;

            if (condition.Part == "time")
            {
                left = $"CAST({column} as time)";
            }
            else if (condition.Part == "date")
            {
                left = $"CAST({column} as date)";
            }
            else
            {
                left = $"DATEPART({condition.Part.ToUpper()}, {column})";
            }

            var sql = $"{left} {condition.Operator} {Parameter(condition.Value)}";

            if (condition.IsNot)
            {
                return($"NOT ({sql})");
            }

            return(sql);
        }
Esempio n. 7
0
        protected virtual string CompileBasicDateCondition(SqlResult ctx, BasicDateCondition x)
        {
            var column = Wrap(x.Column);
            var op     = checkOperator(x.Operator);

            var sql = $"{x.Part.ToUpperInvariant()}({column}) {op} {Parameter(ctx, x.Value)}";

            return(x.IsNot ? $"NOT ({sql})" : sql);
        }
        protected virtual string CompileBasicDateCondition(BasicDateCondition x)
        {
            var column = Wrap(x.Column);

            var sql = $"{x.Part.ToUpper()}({column}) {x.Operator} {Parameter(x.Value)}";

            return(x.IsNot
                ? $"NOT ({sql})"
                : sql);
        }
Esempio n. 9
0
        protected override string CompileBasicDateCondition(SqlResult ctx, BasicDateCondition condition)
        {
            if (condition.Part != "time")
            {
                return(base.CompileBasicDateCondition(ctx, condition));
            }

            var column = Wrap(condition.Column);

            string left;
            string sql;

            if (condition.Value is DateTime || condition.Value is TimeSpan)
            {
                const string format = @"hh\:mm\:ss\:ffffff";
                string       value;
                if (condition.Value is DateTime)
                {
                    value = ((DateTime)condition.Value).ToString(format);
                }
                else
                {
                    value = ((TimeSpan)condition.Value).ToString(format);
                }
                condition.Value = value;
            }

            left = $"CAST({column} as TIME)";

            sql = $"{left} {condition.Operator} CAST({Parameter(ctx, condition.Value)} as TIME)";

            if (condition.IsNot)
            {
                return($"NOT ({sql})");
            }

            return(sql);
        }
Esempio n. 10
0
        protected override string CompileBasicDateCondition(SqlResult ctx, BasicDateCondition condition)
        {
            var column = Wrap(condition.Column);
            var value  = Parameter(ctx, condition.Value);

            var sql         = "";
            var valueFormat = "";

            var isDateTime = (condition.Value is DateTime dt);

            switch (condition.Part)
            {
            case "date":     // assume YY-MM-DD format
                if (isDateTime)
                {
                    valueFormat = $"{value}";
                }
                else
                {
                    valueFormat = $"TO_DATE({value}, 'YY-MM-DD')";
                }
                sql = $"TO_CHAR({column}, 'YY-MM-DD') {condition.Operator} TO_CHAR({valueFormat}, 'YY-MM-DD')";
                break;

            case "time":
                if (isDateTime)
                {
                    valueFormat = $"{value}";
                }
                else
                {
                    // assume HH:MM format
                    if (condition.Value.ToString().Split(':').Count() == 2)
                    {
                        valueFormat = $"TO_DATE({value}, 'HH24:MI')";
                    }
                    else     // assume HH:MM:SS format
                    {
                        valueFormat = $"TO_DATE({value}, 'HH24:MI:SS')";
                    }
                }
                sql = $"TO_CHAR({column}, 'HH24:MI:SS') {condition.Operator} TO_CHAR({valueFormat}, 'HH24:MI:SS')";
                break;

            case "year":
            case "month":
            case "day":
            case "hour":
            case "minute":
            case "second":
                sql = $"EXTRACT({condition.Part.ToUpperInvariant()} FROM {column}) {condition.Operator} {value}";
                break;

            default:
                sql = $"{column} {condition.Operator} {value}";
                break;
            }

            if (condition.IsNot)
            {
                return($"NOT ({sql})");
            }

            return(sql);
        }