當前位置: 首頁>>代碼示例>>C#>>正文


C# DbFunctionTools.GetDateTime方法代碼示例

本文整理匯總了C#中RDBMS_DBCORE.DbFunctionTools.GetDateTime方法的典型用法代碼示例。如果您正苦於以下問題:C# DbFunctionTools.GetDateTime方法的具體用法?C# DbFunctionTools.GetDateTime怎麽用?C# DbFunctionTools.GetDateTime使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在RDBMS_DBCORE.DbFunctionTools的用法示例。


在下文中一共展示了DbFunctionTools.GetDateTime方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。

示例1: DbFunctions_NVL2

        public static void DbFunctions_NVL2()
        {
            DbFunctionTools tools = new DbFunctionTools();

            {
                Console.WriteLine("Testing DbFunctions.NVL2(DateTime)...");

                List<DbValue> args = new List<DbValue>();
                DateTime dt = DateTime.Parse("12/1/2000 10:00:00 AM");
                DateTime ifnull = DateTime.Parse("12/11/2000 10:00:00 AM");
                DateTime notnull = DateTime.Parse("12/14/2000 10:00:00 AM");
                args.Add(tools.AllocValue(dt));
                args.Add(tools.AllocValue(notnull));
                args.Add(tools.AllocValue(ifnull));
                DbFunctionArguments fargs = new DbFunctionArguments(args);

                DbValue valOutput = DbFunctions.NVL2(tools, fargs);
                ByteSlice bs = valOutput.Eval();
                DateTime output = tools.GetDateTime(bs);

                DateTime expected = notnull;

                if (expected != output)
                {
                    throw new Exception("DbFunctions.NVL2(DateTime) has failed.  Expected result: " + expected.ToString() + ", but received: " + output.ToString());
                }
                else
                {
                    Console.WriteLine("Expected results received.");
                }
            }

            {
                Console.WriteLine("Testing DbFunctions.NVL2(DateTime)...");

                List<DbValue> args = new List<DbValue>();

                byte[] buf = new byte[9];
                buf[0] = 1; //is null
                DateTime ifnull = DateTime.Parse("12/11/2000 10:00:00 AM");
                DateTime notnull = DateTime.Parse("12/14/2000 10:00:00 AM");
                args.Add(tools.AllocValue(ByteSlice.Prepare(buf), DbType.Prepare("DateTime", 9)));
                args.Add(tools.AllocValue(notnull));
                args.Add(tools.AllocValue(ifnull));
                DbFunctionArguments fargs = new DbFunctionArguments(args);
                DbValue valOutput = DbFunctions.NVL2(tools, fargs);
                ByteSlice bs = valOutput.Eval();
                DateTime output = tools.GetDateTime(bs);

                DateTime expected = ifnull;
                if (expected != output)
                {
                    throw new Exception("DbFunctions.NVL2(DateTime) has failed.  Expected result: " + expected.ToString() + ", but received: " + output.ToString());
                }
                else
                {
                    Console.WriteLine("Expected results received.");
                }
            }
        }
開發者ID:erisonliang,項目名稱:qizmt,代碼行數:60,代碼來源:DbFunctions_NVL2.cs

示例2: MONTHS_BETWEEN

        public static DbValue MONTHS_BETWEEN(DbFunctionTools tools, DbFunctionArguments args)
        {
            string FunctionName = "MONTHS_BETWEEN";

            args.EnsureCount(FunctionName, 2);

            DbType arg0type;
            ByteSlice arg0 = args[0].Eval(out arg0type);
            if (Types.IsNullValue(arg0))
            {
                return tools.AllocNullValue(); // Give a null, take a null.
            }
            if (arg0type.ID != DbTypeID.DATETIME)
            {
                args.Expected(FunctionName, 0, "input DATETIME, got " + arg0type.Name.ToUpper());
            }
            DbType arg1type;
            ByteSlice arg1 = args[1].Eval(out arg1type);
            if (Types.IsNullValue(arg1))
            {
                return tools.AllocNullValue(); // Give a null, take a null.
            }
            if (arg1type.ID != DbTypeID.DATETIME)
            {
                args.Expected(FunctionName, 0, "input DATETIME, got " + arg1type.Name.ToUpper());
            }

            DateTime dt0 = tools.GetDateTime(arg0);
            DateTime dt1 = tools.GetDateTime(arg1);
            int daysInMonth0 = DateTime.DaysInMonth(dt0.Year, dt0.Month);
            int daysInMonth1 = DateTime.DaysInMonth(dt1.Year, dt1.Month);
            double btw = 0;

            if (dt0.Year == dt1.Year && dt0.Month == dt1.Month) //same month and same year
            {
                btw = (double)(dt0.Day - dt1.Day) / (double)daysInMonth0;
            }
            else if (dt0.Day == daysInMonth0 && dt1.Day == daysInMonth1) //both fall on the last day of their months
            {
                btw = 12 * (dt0.Year - dt1.Year) + dt0.Month - dt1.Month;
            }
            else
            {
                TimeSpan sp = dt0 - dt1;
                btw = sp.TotalDays / 31d;
            }
            
            return tools.AllocValue(btw);
        }
開發者ID:erisonliang,項目名稱:qizmt,代碼行數:49,代碼來源:DbFunctions_MONTHS_BETWEEN.cs

示例3: DbFunctions_ADD_MONTHS

        public static void DbFunctions_ADD_MONTHS()
        {
            DbFunctionTools tools = new DbFunctionTools();

            //String,Int32.
            {
                Console.WriteLine("Testing DbFunctions.ADD_MONTHS...");

                List<DbValue> args = new List<DbValue>();
                DateTime dt = DateTime.Now;
                int months = 9;
                args.Add(tools.AllocValue(dt));
                args.Add(tools.AllocValue(months));
                DbFunctionArguments fargs = new DbFunctionArguments(args);

                DbValue valOutput = DbFunctions.ADD_MONTHS(tools, fargs);
                ByteSlice bs = valOutput.Eval();
                DateTime output = tools.GetDateTime(bs);

                DateTime expected = dt.AddMonths(months);

                if (expected != output)
                {
                    throw new Exception("DbFunctions.ADD_MONTHS has failed.  Expected result: " + expected.ToString() + ", but received: " + output.ToString());
                }
                else
                {
                    Console.WriteLine("Expected results received.");
                }
            }

        }
開發者ID:erisonliang,項目名稱:qizmt,代碼行數:32,代碼來源:DbFunctions_ADD_MONTHS.cs

示例4: ADD_MONTHS

        public static DbValue ADD_MONTHS(DbFunctionTools tools, DbFunctionArguments args)
        {
            string FunctionName = "ADD_MONTHS";

            args.EnsureCount(FunctionName, 2);

            DbType arg0type;
            ByteSlice arg0 = args[0].Eval(out arg0type);
            if (Types.IsNullValue(arg0))
            {
                return tools.AllocNullValue(); // Give a null, take a null.
            }
            if (arg0type.ID != DbTypeID.DATETIME)
            {
                args.Expected(FunctionName, 0, "input DATETIME, got " + arg0type.Name.ToUpper());
            }
            DbType arg1type;
            ByteSlice arg1 = args[1].Eval(out arg1type);
            if (Types.IsNullValue(arg1))
            {
                return tools.AllocNullValue(); // Give a null, take a null.
            }
            if (arg1type.ID != DbTypeID.INT)
            {
                args.Expected(FunctionName, 0, "input INT, got " + arg1type.Name.ToUpper());
            }

            DateTime dt = tools.GetDateTime(arg0);
            int months = tools.GetInt(arg1);
            dt = dt.AddMonths(months);            
            return tools.AllocValue(dt);
        }
開發者ID:erisonliang,項目名稱:qizmt,代碼行數:32,代碼來源:DbFunctions_ADD_MONTHS.cs

示例5: DbFunctions_SYSDATE

        public static void DbFunctions_SYSDATE()
        {
            DbFunctionTools tools = new DbFunctionTools();

            //String,Int32.
            {
                Console.WriteLine("Testing DbFunctions.SYSDATE...");

                DbValue valOutput = DbFunctions.SYSDATE(tools, new DbFunctionArguments());
                ByteSlice bs = valOutput.Eval();
                DateTime output = tools.GetDateTime(bs);

                DateTime expected = DateTime.Now;
                TimeSpan sp = output - expected;

                if (sp.TotalMinutes > 5)
                {
                    throw new Exception("DbFunctions.SYSDATE has failed.  Expected result: " + expected.ToString() + ", but received: " + output.ToString());
                }
                else
                {
                    Console.WriteLine("Expected results received.");
                }
            }

        }
開發者ID:erisonliang,項目名稱:qizmt,代碼行數:26,代碼來源:DbFunctions_SYSDATE.cs

示例6: LAST_DAY

        public static DbValue LAST_DAY(DbFunctionTools tools, DbFunctionArguments args)
        {
            string FunctionName = "LAST_DAY";

            args.EnsureCount(FunctionName, 1);

            DbType arg0type;
            ByteSlice arg0 = args[0].Eval(out arg0type);
            if (Types.IsNullValue(arg0))
            {
                return tools.AllocNullValue(); // Give a null, take a null.
            }
            if (arg0type.ID != DbTypeID.DATETIME)
            {
                args.Expected(FunctionName, 0, "input DATETIME, got " + arg0type.Name.ToUpper());
            }

            DateTime dt = tools.GetDateTime(arg0);
            dt = dt.AddMonths(1);
            dt = dt.AddDays(-1);
            return tools.AllocValue(dt);
        }
開發者ID:erisonliang,項目名稱:qizmt,代碼行數:22,代碼來源:DbFunctions_LAST_DAY.cs

示例7: FORMAT

        public static DbValue FORMAT(DbFunctionTools tools, DbFunctionArguments args)
        {
            string FunctionName = "FORMAT";

            args.EnsureCount(FunctionName, 2);

            DbType arg0type;
            ByteSlice arg0 = args[0].Eval(out arg0type);
            DbType arg1type;
            ByteSlice arg1 = args[1].Eval(out arg1type);
            if (Types.IsNullValue(arg0))
            {
                return tools.AllocNullValue(); // Give a null, take a null.
            }
            if (arg0type.ID != DbTypeID.CHARS)
            {
                args.Expected(FunctionName, 0, "input CHAR(n), got " + arg0type.Name.ToUpper());
            }
            if (Types.IsNullValue(arg1))
            {
                return tools.AllocNullValue(); // Give a null, take a null.
            }
            if (arg1type.ID != DbTypeID.DATETIME)
            {
                args.Expected(FunctionName, 0, "input DATETIME, got " + arg1type.Name.ToUpper());
            }

            string formatstr = tools.GetString(arg0).ToString();            
            DateTime dt = tools.GetDateTime(arg1);

            mstring result = mstring.Prepare(dt.ToString(formatstr));
            while (result.Length < 80)
            {
                result.MAppend('\0');
            }
            return tools.AllocValue(result);
        }
開發者ID:erisonliang,項目名稱:qizmt,代碼行數:37,代碼來源:DbFunctions_FORMAT.cs

示例8: DATEPART_YEAR

        public static DbValue DATEPART_YEAR(DbFunctionTools tools, DbFunctionArguments args)
        {
            string FunctionName = "DATEPART_YEAR";

            args.EnsureCount(FunctionName, 1);

            DbType arg0type;
            ByteSlice arg0 = args[0].Eval(out arg0type);
            if (Types.IsNullValue(arg0))
            {
                return tools.AllocNullValue(); // Give a null, take a null.
            }

            if (arg0type.ID != DbTypeID.DATETIME)
            {
                args.Expected(FunctionName, 0, "input DateTime, got " + arg0type.Name.ToUpper());
                return null; // Doesn't reach here.
            }

            DateTime dt = tools.GetDateTime(arg0);

            return tools.AllocValue(dt.Year);

        }
開發者ID:erisonliang,項目名稱:qizmt,代碼行數:24,代碼來源:DbFunctions_DATEPART_YEAR.cs

示例9: DATEDIFF

        public static DbValue DATEDIFF(DbFunctionTools tools, DbFunctionArguments args)
        {
            string FunctionName = "DATEDIFF";

            args.EnsureCount(FunctionName, 3);

            DbType arg0type;
            ByteSlice arg0 = args[0].Eval(out arg0type);
            DbType arg1type;
            ByteSlice arg1 = args[1].Eval(out arg1type);
            DbType arg2type;
            ByteSlice arg2 = args[2].Eval(out arg2type);
            if (Types.IsNullValue(arg0))
            {
                return tools.AllocNullValue(); // Give a null, take a null.
            }
            if (arg0type.ID != DbTypeID.CHARS)
            {
                args.Expected(FunctionName, 0, "input CHAR(n), got " + arg0type.Name.ToUpper());
            }
            if (Types.IsNullValue(arg1))
            {
                return tools.AllocNullValue(); // Give a null, take a null.
            }
            if (arg1type.ID != DbTypeID.DATETIME)
            {
                args.Expected(FunctionName, 0, "input DATETIME, got " + arg1type.Name.ToUpper());
            }
            if (Types.IsNullValue(arg2))
            {
                return tools.AllocNullValue(); // Give a null, take a null.
            }
            if (arg2type.ID != DbTypeID.DATETIME)
            {
                args.Expected(FunctionName, 0, "input DATETIME, got " + arg2type.Name.ToUpper());
            }

            string datepart = tools.GetString(arg0).ToUpperM().ToString();
            DateTime startdate = tools.GetDateTime(arg1);            
            DateTime enddate = tools.GetDateTime(arg2);        
            double partdiff = 0;

            switch (datepart)
            {
                case "YEAR":
                case "YY":
                case "YYYY":
                    partdiff = enddate.Year - startdate.Year;
                    break;

                case "QUARTER":
                case "QQ":
                case "Q":                    
                    partdiff = GetMonthDiff(startdate.Year, startdate.Month, enddate.Year, enddate.Month) / 3;                                        
                    break;

                case "MONTH":
                case "MM":
                case "M":
                    partdiff = GetMonthDiff(startdate.Year, startdate.Month, enddate.Year, enddate.Month);
                    break;

                case "DAY":
                case "DD":
                case "D":
                    {
                        DateTime sdate = new DateTime(startdate.Year, startdate.Month, startdate.Day);
                        DateTime edate = new DateTime(enddate.Year, enddate.Month, enddate.Day);
                        TimeSpan sp = edate - sdate;
                        partdiff = sp.TotalDays;
                    }                    
                    break;

                case "WEEK":
                case "WK":
                case "WW":
                    {
                        DateTime sdate = new DateTime(startdate.Year, startdate.Month, startdate.Day);
                        DateTime edate = new DateTime(enddate.Year, enddate.Month, enddate.Day);
                        TimeSpan sp = edate - sdate;
                        partdiff = (int)sp.TotalDays / 7;
                    }     
                    break;

                case "HOUR":
                case "HH":
                    {
                        DateTime sdate = new DateTime(startdate.Year, startdate.Month, startdate.Day, startdate.Hour, 0, 0);
                        DateTime edate = new DateTime(enddate.Year, enddate.Month, enddate.Day, enddate.Hour, 0, 0);
                        TimeSpan sp = edate - sdate;
                        partdiff = sp.TotalHours;
                    }     
                    break;

                case "MINUTE":
                case "MI":
                case "N":
                    {
                        DateTime sdate = new DateTime(startdate.Year, startdate.Month, startdate.Day, startdate.Hour, startdate.Minute, 0);
                        DateTime edate = new DateTime(enddate.Year, enddate.Month, enddate.Day, enddate.Hour, enddate.Minute, 0);
//.........這裏部分代碼省略.........
開發者ID:erisonliang,項目名稱:qizmt,代碼行數:101,代碼來源:DbFunctions_DATEDIFF.cs

示例10: DbFunctions_NULLIF

        public static void DbFunctions_NULLIF()
        {
            DbFunctionTools tools = new DbFunctionTools();

            {
                Console.WriteLine("Testing DbFunctions.NULLIF(DateTime, DateTime)...");

                List<DbValue> args = new List<DbValue>();
                args.Add(tools.AllocValue(DateTime.Parse("12/1/2000 10:00:00 AM")));
                args.Add(tools.AllocValue(DateTime.Parse("12/1/2000 10:00:00 AM")));
                DbFunctionArguments fargs = new DbFunctionArguments(args);

                DbValue valOutput = DbFunctions.NULLIF(tools, fargs);                
                ByteSlice bs = valOutput.Eval();
                bool output = Types.IsNullValue(bs);
                bool expected = true;

                if (expected != output)
                {
                    throw new Exception("DbFunctions.NULLIF(DateTime, DateTime) has failed.  Expected result: " + expected.ToString() + ", but received: " + output.ToString());
                }
                else
                {
                    Console.WriteLine("Expected results received.");
                }
            }

            {
                Console.WriteLine("Testing DbFunctions.NULLIF(DateTime, DateTime)...");

                List<DbValue> args = new List<DbValue>();
                DateTime dt = DateTime.Parse("12/1/2000 10:00:00 AM");
                args.Add(tools.AllocValue(dt));
                args.Add(tools.AllocValue(DateTime.Parse("12/2/2000 10:00:00 AM")));
                DbFunctionArguments fargs = new DbFunctionArguments(args);

                DbValue valOutput = DbFunctions.NULLIF(tools, fargs);
                ByteSlice bs = valOutput.Eval();
                DateTime output = tools.GetDateTime(bs);
                DateTime expected = dt;

                if (expected != output)
                {
                    throw new Exception("DbFunctions.NULLIF(DateTime, DateTime) has failed.  Expected result: " + expected.ToString() + ", but received: " + output.ToString());
                }
                else
                {
                    Console.WriteLine("Expected results received.");
                }
            }

            {
                Console.WriteLine("Testing DbFunctions.NULLIF(Int32, Int32)...");

                List<DbValue> args = new List<DbValue>();
                args.Add(tools.AllocValue(10));
                args.Add(tools.AllocValue(10));
                DbFunctionArguments fargs = new DbFunctionArguments(args);

                DbValue valOutput = DbFunctions.NULLIF(tools, fargs);
                ByteSlice bs = valOutput.Eval();
                bool output = Types.IsNullValue(bs);
                bool expected = true;

                if (expected != output)
                {
                    throw new Exception("DbFunctions.NULLIF(Int32, Int32) has failed.  Expected result: " + expected.ToString() + ", but received: " + output.ToString());
                }
                else
                {
                    Console.WriteLine("Expected results received.");
                }
            }

            {
                Console.WriteLine("Testing DbFunctions.NULLIF(Int32, Int32)...");

                List<DbValue> args = new List<DbValue>();
                int x = 10;
                args.Add(tools.AllocValue(x));
                args.Add(tools.AllocValue(11));
                DbFunctionArguments fargs = new DbFunctionArguments(args);

                DbValue valOutput = DbFunctions.NULLIF(tools, fargs);
                ByteSlice bs = valOutput.Eval();
                int output = tools.GetInt(bs);
                int expected = x;

                if (expected != output)
                {
                    throw new Exception("DbFunctions.NULLIF(Int32, Int32) has failed.  Expected result: " + expected.ToString() + ", but received: " + output.ToString());
                }
                else
                {
                    Console.WriteLine("Expected results received.");
                }
            }

            {
                Console.WriteLine("Testing DbFunctions.NULLIF(Int32, long)...");
//.........這裏部分代碼省略.........
開發者ID:erisonliang,項目名稱:qizmt,代碼行數:101,代碼來源:DbFunctions_NULLIF.cs

示例11: DATEADD

        public static DbValue DATEADD(DbFunctionTools tools, DbFunctionArguments args)
        {
            string FunctionName = "DATEADD";

            args.EnsureCount(FunctionName, 3);

            DbType arg0type;
            ByteSlice arg0 = args[0].Eval(out arg0type);
            DbType arg1type;
            ByteSlice arg1 = args[1].Eval(out arg1type);
            DbType arg2type;
            ByteSlice arg2 = args[2].Eval(out arg2type);
            if (Types.IsNullValue(arg0))
            {
                return tools.AllocNullValue(); // Give a null, take a null.
            }
            if (arg0type.ID != DbTypeID.CHARS)
            {
                args.Expected(FunctionName, 0, "input CHAR(n), got " + arg0type.Name.ToUpper());
            }
            if (Types.IsNullValue(arg1))
            {
                return tools.AllocNullValue(); // Give a null, take a null.
            }
            if (arg1type.ID != DbTypeID.INT)
            {
                args.Expected(FunctionName, 0, "input INT, got " + arg1type.Name.ToUpper());
            }
            if (Types.IsNullValue(arg2))
            {
                return tools.AllocNullValue(); // Give a null, take a null.
            }
            if (arg2type.ID != DbTypeID.DATETIME)
            {
                args.Expected(FunctionName, 0, "input DATETIME, got " + arg2type.Name.ToUpper());
            }

            string datepart = tools.GetString(arg0).ToUpperM().ToString();
            int num = tools.GetInt(arg1);
            DateTime dt = tools.GetDateTime(arg2);
            DateTime newdt = dt;

            switch (datepart)
            {
                case "YEAR":
                case "YY":
                case "YYYY":                    
                    newdt = dt.AddYears(num);
                    break;
                    
                case "QUARTER":
                case "QQ":
                case "Q":
                    newdt = dt.AddMonths(num * 3);
                    break;

                case "MONTH":
                case "MM":
                case "M":
                    newdt = dt.AddMonths(num);
                    break;

                case "DAY":
                case "DD":
                case "D":
                    newdt = dt.AddDays(num);
                    break;

                case "WEEK":
                case "WK":
                case "WW":
                    newdt = dt.AddDays(7 * num);
                    break;

                case "HOUR":
                case "HH":
                    newdt = dt.AddHours(num);
                    break;

                case "MINUTE":
                case "MI":
                case "N":
                    newdt = dt.AddMinutes(num);
                    break;

                case "SECOND":
                case "SS":
                case "S":
                    newdt = dt.AddSeconds(num);
                    break;

                case "MILLISECOND":
                case "MS":
                    newdt = dt.AddMilliseconds(num);
                    break;

                default:
                    args.Expected(FunctionName, 0, "input datepart invalid");
                    return null;
            }
//.........這裏部分代碼省略.........
開發者ID:erisonliang,項目名稱:qizmt,代碼行數:101,代碼來源:DbFunctions_DATEADD.cs

示例12: DbFunctions_CAST

        public static void DbFunctions_CAST()
        {
            DbFunctionTools tools = new DbFunctionTools();

            DateTime dt = DateTime.Now;
            DbValue[] conv = new DbValue[]
                {
                    tools.AllocValue((int)-372), tools.AllocValue((int)-372),
                    tools.AllocValue((int)-372), tools.AllocValue((long)-372),
                    tools.AllocValue((int)-372), tools.AllocValue((double)-372),
                    //tools.AllocValue((int)dt.Ticks), tools.AllocValue(new DateTime((int)dt.Ticks)),
                    tools.AllocValue((int)-372), tools.AllocValue(mstring.Prepare("-372")),
                    tools.AllocValue((int)-372), tools.AllocValue(mstring.Prepare("-372"), 51),

                    tools.AllocValue((long)-372), tools.AllocValue((int)-372),
                    tools.AllocValue((long)-372), tools.AllocValue((long)-372),
                    tools.AllocValue((long)-372), tools.AllocValue((double)-372),
                    tools.AllocValue((long)dt.Ticks), tools.AllocValue(new DateTime((long)dt.Ticks)),
                    tools.AllocValue((long)-372), tools.AllocValue(mstring.Prepare("-372")),
                    tools.AllocValue((long)-372), tools.AllocValue(mstring.Prepare("-372"), 51),

                    tools.AllocValue((double)-372), tools.AllocValue((int)-372),
                    tools.AllocValue((double)-372), tools.AllocValue((long)-372),
                    tools.AllocValue((double)-372), tools.AllocValue((double)-372),
                    tools.AllocValue((double)dt.Ticks), tools.AllocValue(new DateTime((long)(double)dt.Ticks)),
                    tools.AllocValue((double)-372), tools.AllocValue(mstring.Prepare("-372")),
                    tools.AllocValue((double)-372), tools.AllocValue(mstring.Prepare("-372"), 51),
                    // Extra double ones:
                    tools.AllocValue((double)101.1), tools.AllocValue((int)101),
                    tools.AllocValue((double)101.1), tools.AllocValue((long)101),
                    tools.AllocValue((double)101.1), tools.AllocValue(mstring.Prepare((double)101.1)),
                    tools.AllocValue((double)(22.0/7.0)), tools.AllocValue(mstring.Prepare((double)(22.0/7.0))),

                    tools.AllocValue(dt), tools.AllocValue((int)dt.Ticks),
                    tools.AllocValue(dt), tools.AllocValue((long)dt.Ticks),
                    tools.AllocValue(dt), tools.AllocValue((double)dt.Ticks),
                    tools.AllocValue(dt), tools.AllocValue(dt),
                    tools.AllocValue(dt), tools.AllocValue(mstring.Prepare(dt.ToString())),
                    tools.AllocValue(dt), tools.AllocValue(mstring.Prepare(dt.ToString()), 51),

                    tools.AllocValue(mstring.Prepare("-372")), tools.AllocValue((int)-372),
                    tools.AllocValue(mstring.Prepare("-372")), tools.AllocValue((long)-372),
                    tools.AllocValue(mstring.Prepare("-372")), tools.AllocValue((double)-372),
                    tools.AllocValue(mstring.Prepare(dt.ToString())), tools.AllocValue(dt),
                    tools.AllocValue(mstring.Prepare("-372")), tools.AllocValue(mstring.Prepare("-372")),
                    tools.AllocValue(mstring.Prepare("-372")), tools.AllocValue(mstring.Prepare("-372"), 51),
                    // Extra string ones:
                    tools.AllocValue(mstring.Prepare("-372"), 51), tools.AllocValue(mstring.Prepare("-372"), 101),
                    tools.AllocValue(mstring.Prepare("-372"), 101), tools.AllocValue(mstring.Prepare("-372"), 51),

                    null
                };


            for (int ic = 0; ic + 2 <= conv.Length; ic += 2)
            {
                DbValue a = conv[ic + 0];
                DbType atype;
                ByteSlice abytes = a.Eval(out atype);
                
                DbValue b = conv[ic + 1];
                DbType btype;
                ByteSlice bbytes = b.Eval(out btype);

                Console.WriteLine("Testing DbFunctions.CAST({0} AS {1})...", atype.Name, btype.Name);
                
                List<DbValue> args = new List<DbValue>();
                args.Add(a);
                args.Add(tools.AllocValue(mstring.Prepare("AS " + btype.Name)));
                DbFunctionArguments fargs = new DbFunctionArguments(args);

                DbValue r = DbFunctions.CAST(tools, fargs);
                DbType rtype;
                ByteSlice rbytes = r.Eval(out rtype);

                if (rtype.ID != btype.ID)
                {
                    throw new Exception(string.Format("DbFunctions.CAST({0} AS {1}) resulted in type {2}: result has unexpected ID of {3}",
                        atype.Name, btype.Name, btype.Name, rtype.ID));
                }
                if (rtype.Size != btype.Size)
                {
                    throw new Exception(string.Format("DbFunctions.CAST({0} AS {1}) resulted in type {2}: result has unexpected size of {3}",
                        atype.Name, btype.Name, btype.Name, rtype.Size));
                }
                if (rtype.ID == DbTypeID.DATETIME)
                {
                    if (tools.GetDateTime(rbytes).ToString() != tools.GetDateTime(bbytes).ToString())
                    {
                        throw new Exception(string.Format("DbFunctions.CAST({0} AS {1}) resulted in type {2}: result has unexpected value",
                            atype.Name, btype.Name, btype.Name));
                    }
                }
                else
                {
                    for (int ix = 0; ix < rtype.Size; ix++)
                    {
                        if (rbytes[ix] != bbytes[ix])
                        {
                            throw new Exception(string.Format("DbFunctions.CAST({0} AS {1}) resulted in type {2}: result has unexpected value",
//.........這裏部分代碼省略.........
開發者ID:erisonliang,項目名稱:qizmt,代碼行數:101,代碼來源:DbFunctions_CAST.cs

示例13: DbFunctions_DATEADD

        public static void DbFunctions_DATEADD()
        {
            DbFunctionTools tools = new DbFunctionTools();

            {
                Console.WriteLine("Testing DbFunctions.DATEADD(year)...");

                List<DbValue> args = new List<DbValue>();
                mstring datepart = mstring.Prepare("year");
                args.Add(tools.AllocValue(datepart));
                int number = -10;
                args.Add(tools.AllocValue(number));
                DateTime dt = new DateTime(2000, 9, 14, 12, 0, 0);
                args.Add(tools.AllocValue(dt));
                DbFunctionArguments fargs = new DbFunctionArguments(args);

                DbValue valOutput = DbFunctions.DATEADD(tools, fargs);
                ByteSlice bs = valOutput.Eval();
                DateTime output = tools.GetDateTime(bs);
                DateTime expected = dt.AddYears(number);

                if (expected != output)
                {
                    throw new Exception("DbFunctions.DATEADD(year) has failed.  Expected result: " + expected.ToString() + ", but received: " + output.ToString());
                }
                else
                {
                    Console.WriteLine("Expected results received.");
                }
            }

            {
                Console.WriteLine("Testing DbFunctions.DATEADD(quarter)...");

                List<DbValue> args = new List<DbValue>();
                mstring datepart = mstring.Prepare("qq");
                args.Add(tools.AllocValue(datepart));
                int number = 5;
                args.Add(tools.AllocValue(number));
                DateTime dt = new DateTime(2000, 9, 14, 12, 0, 0);
                args.Add(tools.AllocValue(dt));
                DbFunctionArguments fargs = new DbFunctionArguments(args);

                DbValue valOutput = DbFunctions.DATEADD(tools, fargs);
                ByteSlice bs = valOutput.Eval();
                DateTime output = tools.GetDateTime(bs);
                DateTime expected = dt.AddMonths(number * 3);

                if (expected != output)
                {
                    throw new Exception("DbFunctions.DATEADD(quarter) has failed.  Expected result: " + expected.ToString() + ", but received: " + output.ToString());
                }
                else
                {
                    Console.WriteLine("Expected results received.");
                }
            }

            {
                Console.WriteLine("Testing DbFunctions.DATEADD(month)...");

                List<DbValue> args = new List<DbValue>();
                mstring datepart = mstring.Prepare("m");
                args.Add(tools.AllocValue(datepart));
                int number = 10;
                args.Add(tools.AllocValue(number));
                DateTime dt = new DateTime(2000, 9, 14, 12, 0, 0);
                args.Add(tools.AllocValue(dt));
                DbFunctionArguments fargs = new DbFunctionArguments(args);

                DbValue valOutput = DbFunctions.DATEADD(tools, fargs);
                ByteSlice bs = valOutput.Eval();
                DateTime output = tools.GetDateTime(bs);
                DateTime expected = dt.AddMonths(number);

                if (expected != output)
                {
                    throw new Exception("DbFunctions.DATEADD(month) has failed.  Expected result: " + expected.ToString() + ", but received: " + output.ToString());
                }
                else
                {
                    Console.WriteLine("Expected results received.");
                }
            }

            {
                Console.WriteLine("Testing DbFunctions.DATEADD(day)...");

                List<DbValue> args = new List<DbValue>();
                mstring datepart = mstring.Prepare("day");
                args.Add(tools.AllocValue(datepart));
                int number = -9;
                args.Add(tools.AllocValue(number));
                DateTime dt = new DateTime(2000, 9, 14, 12, 0, 0);
                args.Add(tools.AllocValue(dt));
                DbFunctionArguments fargs = new DbFunctionArguments(args);

                DbValue valOutput = DbFunctions.DATEADD(tools, fargs);
                ByteSlice bs = valOutput.Eval();
                DateTime output = tools.GetDateTime(bs);
//.........這裏部分代碼省略.........
開發者ID:erisonliang,項目名稱:qizmt,代碼行數:101,代碼來源:DbFunctions_DATEADD.cs

示例14: CAST

        public static DbValue CAST(DbFunctionTools tools, DbFunctionArguments args)
        {
#if DEBUG
            //System.Diagnostics.Debugger.Launch();
#endif

            string FunctionName = "CAST";

            args.EnsureCount(FunctionName, 2);

            DbType type;
            ByteSlice bs = args[0].Eval(out type);
            
            mstring xas = tools.GetString(args[1]);
            if (!xas.StartsWith("AS "))
            {
#if DEBUG
                throw new Exception("Expected AS <type> in CAST, not: " + xas);
#endif
                throw new Exception("Expected AS <type> in CAST");
            }
            mstring msastype = xas.SubstringM(3);
            string sastype = msastype.ToString(); // Alloc.
            sastype = DbType.NormalizeName(sastype); // Alloc if char(n).
            DbType astype = DbType.Prepare(sastype); // Alloc if char(n).
            if (DbTypeID.NULL == astype.ID)
            {
                throw new Exception("Unknown AS type in CAST: " + sastype);
            }

            switch (astype.ID)
            {
                case DbTypeID.INT:
                    switch (type.ID)
                    {
                        case DbTypeID.INT: // as INT
                            if (astype.Size > type.Size)
                            {
                                throw new Exception("CAST: source value buffer too small");
                            }
                            return tools.AllocValue(ByteSlice.Prepare(bs, 0, astype.Size), astype);
                        case DbTypeID.LONG: // as INT
                            return tools.AllocValue((int)tools.GetLong(bs));
                        case DbTypeID.DOUBLE: // as INT
                            return tools.AllocValue((int)tools.GetDouble(bs));
                        case DbTypeID.DATETIME: // as INT
                            return tools.AllocValue((int)tools.GetDateTime(bs).Ticks);
                        case DbTypeID.CHARS: // as INT
                            {
                                int to = tools.GetString(bs).NextItemToInt32(' ');
                                return tools.AllocValue(to);
                            }
                        default:
                            throw new Exception("Cannot handle CAST value of type " + type.Name + " AS " + astype.Name);
                    }
                    break;
                case DbTypeID.LONG:
                    switch (type.ID)
                    {
                        case DbTypeID.INT: // as LONG
                            return tools.AllocValue((long)tools.GetInt(bs));
                        case DbTypeID.LONG: // as LONG
                            if (astype.Size > type.Size)
                            {
                                throw new Exception("CAST: source value buffer too small");
                            }
                            return tools.AllocValue(ByteSlice.Prepare(bs, 0, astype.Size), astype);
                        case DbTypeID.DOUBLE: // as LONG
                            return tools.AllocValue((long)tools.GetDouble(bs));
                        case DbTypeID.DATETIME: // as LONG
                            return tools.AllocValue((long)tools.GetDateTime(bs).Ticks);
                        case DbTypeID.CHARS: // as LONG
                            {
                                long to = tools.GetString(bs).NextItemToInt64(' ');
                                return tools.AllocValue(to);
                            }
                        default:
                            throw new Exception("Cannot handle CAST value of type " + type.Name + " AS " + astype.Name);
                    }
                    break;
                case DbTypeID.DOUBLE:
                    switch (type.ID)
                    {
                        case DbTypeID.INT: // as DOUBLE
                            return tools.AllocValue((double)tools.GetInt(bs));
                        case DbTypeID.LONG: // as DOUBLE
                            return tools.AllocValue((double)tools.GetLong(bs));
                        case DbTypeID.DOUBLE: // as DOUBLE
                            if (astype.Size > type.Size)
                            {
                                throw new Exception("CAST: source value buffer too small");
                            }
                            return tools.AllocValue(ByteSlice.Prepare(bs, 0, astype.Size), astype);
                        case DbTypeID.DATETIME: // as DOUBLE
                            return tools.AllocValue((double)tools.GetDateTime(bs).Ticks);
                        case DbTypeID.CHARS: // as DOUBLE
                            {
                                double to = tools.GetString(bs).NextItemToDouble(' ');
                                return tools.AllocValue(to);
                            }
//.........這裏部分代碼省略.........
開發者ID:erisonliang,項目名稱:qizmt,代碼行數:101,代碼來源:DbFunctions_CAST.cs

示例15: COMPARE

        public static DbValue COMPARE(DbFunctionTools tools, DbFunctionArguments args)
        {
            string FunctionName = "COMPARE";

            args.EnsureCount(FunctionName, 2);

            int result;

            DbType arg0type;
            ByteSlice arg0 = args[0].Eval(out arg0type);
            DbType arg1type;
            ByteSlice arg1 = args[1].Eval(out arg1type);

            if (Types.IsNullValue(arg0))
            {
                result = int.MaxValue;
                return tools.AllocValue(result);
            }
            if (Types.IsNullValue(arg1))
            {
                result = int.MinValue;
                return tools.AllocValue(result);
            }

            int i0 = 0, i1 = 0;
            long l0 = 0, l1 = 0;
            double d0 = 0, d1 = 0;

            switch (arg0type.ID)
            {
                case DbTypeID.INT:
                    i0 = tools.GetInt(arg0);
                    break;

                case DbTypeID.LONG:
                    l0 = tools.GetLong(arg0);
                    break;

                case DbTypeID.DOUBLE:
                    d0 = tools.GetDouble(arg0);
                    break;

                case DbTypeID.CHARS:
                    {
                        if (arg1type.ID != DbTypeID.CHARS && arg1type.ID != DbTypeID.DATETIME)
                        {
                            args.Expected(FunctionName, 0, "input CHAR(n) or DATETIME, got " + arg1type.Name.ToUpper());
                            return null; // Doesn't reach here.
                        }

                        if (arg1type.ID == DbTypeID.CHARS)
                        {
                            for (int i = 1; ; i += 2)
                            {
                                bool b1end = (i + 2 > arg0.Length) || (arg0[i] == 0 && arg0[i + 1] == 0);
                                bool b2end = (i + 2 > arg1.Length) || (arg1[i] == 0 && arg1[i + 1] == 0);
                                if (b1end)
                                {
                                    if (b2end)
                                    {
                                        result = 0;
                                        break;
                                    }
                                    result = -1;
                                    break;
                                }
                                else if (b2end)
                                {
                                    result = 1;
                                    break;
                                }
                                int diff = Types.UTF16BytesToLowerChar(arg0[i], arg0[i + 1])
                                    - Types.UTF16BytesToLowerChar(arg1[i], arg1[i + 1]);
                                if (0 != diff)
                                {
                                    char ch0 = Types.UTF16BytesToChar(arg0[i], arg0[i + 1]);
                                    char ch1 = Types.UTF16BytesToChar(arg1[i], arg1[i + 1]);
                                    if (!Char.IsLetter(ch0) || !Char.IsLetter(ch1))
                                    {
                                        result = ch0 - ch1;
                                    }
                                    result = diff;
                                    break;
                                }
                            }
                        }
                        else
                        {
                            string sdt = tools.GetString(arg0).ToString();
                            DateTime dt0 = DateTime.Parse(sdt);
                            DateTime dt1 = tools.GetDateTime(arg1);
                            result = dt0.CompareTo(dt1);
                                                      
                        }
                        return tools.AllocValue(result);  
                    }
                    break;

                case DbTypeID.DATETIME:
                    {
//.........這裏部分代碼省略.........
開發者ID:erisonliang,項目名稱:qizmt,代碼行數:101,代碼來源:DbFunctions_COMPARE.cs


注:本文中的RDBMS_DBCORE.DbFunctionTools.GetDateTime方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。