Пример #1
0
        public override string ConvertToString(object a)
        {
            if (a == null)
            {
                return(null);
            }
            switch (base.TypeCode)
            {
            case 0x5b:
                return(UtlDateTime.GetDateString(((TimestampData)a).GetSeconds()));

            case 0x5c:
            case 0x5e:
            {
                TimeData data = (TimeData)a;
                int      num2 = NormaliseTime(data.GetSeconds() + data.GetZone());
                string   str2 = base.IntervalSecondToString((long)num2, data.GetNanos(), false);
                if (this._withTimeZone)
                {
                    str2 = SqlType.SqlIntervalHourToMinute.IntervalSecondToString((long)data.GetZone(), 0, true);
                    StringBuilder builder1 = new StringBuilder(str2);
                    builder1.Append(str2);
                    return(builder1.ToString());
                }
                return(str2);
            }

            case 0x5d:
            case 0x5f:
            {
                TimestampData data2 = (TimestampData)a;
                StringBuilder sb    = new StringBuilder();
                UtlDateTime.GetTimestampString(sb, data2.GetSeconds() + data2.GetZone(), data2.GetNanos(), base.Scale);
                if (this._withTimeZone)
                {
                    string str3 = SqlType.SqlIntervalHourToMinute.IntervalSecondToString((long)data2.GetZone(), 0, true);
                    sb.Append(str3);
                    return(sb.ToString());
                }
                return(sb.ToString());
            }
            }
            throw Error.RuntimeError(0xc9, "DateTimeType");
        }
Пример #2
0
        public override object ConvertSQLToCSharp(ISessionInterface session, object a)
        {
            if (a == null)
            {
                return(null);
            }
            switch (base.TypeCode)
            {
            case 0x5b:
            {
                long seconds = ((TimestampData)a).GetSeconds();
                seconds = UtlDateTime.ConvertTicksToTimeZone(session.GetTimeZone(), seconds * 0x989680L) / 0x989680L;
                return(new DateTime(UtlDateTime.GetNormalisedDate(seconds) * 0x989680L));
            }

            case 0x5c:
            {
                long seconds = ((TimeData)a).GetSeconds();
                seconds = UtlDateTime.ConvertTicksToTimeZone(session.GetTimeZone(), seconds * 0x989680L) / 0x989680L;
                return(new DateTime(UtlDateTime.GetNormalisedTime(seconds) * 0x989680L));
            }

            case 0x5d:
            {
                TimestampData data    = (TimestampData)a;
                long          seconds = data.GetSeconds();
                seconds = UtlDateTime.ConvertTicksToTimeZone(session.GetTimeZone(), seconds * 0x989680L) / 0x989680L;
                return(new DateTime((seconds * 0x989680L) + (data.GetNanos() / 100)));
            }

            case 0x5e:
            {
                TimeData data2 = (TimeData)a;
                return(new DateTime(UtlDateTime.GetNormalisedTime((long)(data2.GetSeconds() + data2.GetZone())) * 0x989680L));
            }

            case 0x5f:
            {
                TimestampData data3 = (TimestampData)a;
                return(new DateTime((data3.GetSeconds() * 0x989680L) + (data3.GetNanos() / 100)));
            }
            }
            throw Error.RuntimeError(0xc9, "DateTimeType");
        }
Пример #3
0
        public object GetValue(long seconds, int nanos, int zoneSeconds)
        {
            switch (base.TypeCode)
            {
            case 0x5b:
                seconds = UtlDateTime.GetNormalisedDate(seconds + zoneSeconds);
                return(new TimestampData(seconds));

            case 0x5c:
                seconds = UtlDateTime.GetNormalisedTime(seconds + zoneSeconds);
                return(new TimeData(seconds, nanos));

            case 0x5d:
                return(new TimestampData(seconds + zoneSeconds, nanos));

            case 0x5e:
                seconds = UtlDateTime.GetNormalisedTime(seconds);
                return(new TimeData((long)((int)seconds), nanos, zoneSeconds));

            case 0x5f:
                return(new TimestampData(seconds, nanos, zoneSeconds));
            }
            throw Error.RuntimeError(0xc9, "DateTimeType");
        }
Пример #4
0
        public override object ConvertToType(ISessionInterface session, object a, SqlType othType)
        {
            if (a == null)
            {
                return(a);
            }
            switch (othType.TypeCode)
            {
            case 0x5b:
            case 0x5c:
            case 0x5d:
            case 0x5e:
            case 0x5f:
                goto Label_0126;

            case 100:
            case 1:
            case 12:
                break;

            case 40:
            case 0x19:
            case 3:
            case 4:
            case 8:
                a = a.ToString();
                break;

            default:
                throw Error.GetError(0x15b9);
            }
            int typeCode = base.TypeCode;

            if (typeCode != 0x5b)
            {
                if ((typeCode - 0x5c) <= 3)
                {
                    goto Label_0105;
                }
                goto Label_0126;
            }
            try
            {
                DateTime time    = DateTime.Parse((string)a, CultureInfo.InvariantCulture);
                long     seconds = time.Ticks / 0x989680L;
                long     num4    = (time.Ticks - (seconds * 0x989680L)) * 100L;
                return(new TimestampData(seconds, (int)num4));
            }
            catch (Exception)
            {
                return(session.GetScanner().ConvertToDatetimeInterval(session, (string)a, this));
            }
            Label_0105:
            return(session.GetScanner().ConvertToDatetimeInterval(session, (string)a, this));

Label_0126:
            switch (base.TypeCode)
            {
            case 0x5b:
                switch (othType.TypeCode)
                {
                case 0x5b:
                    return(a);

                case 0x5d:
                    return(new TimestampData(UtlDateTime.GetNormalisedDate(((TimestampData)a).GetSeconds())));

                case 0x5f:
                    return(new TimestampData(UtlDateTime.GetNormalisedDate(((TimestampData)a).GetSeconds() + ((TimestampData)a).GetZone())));
                }
                break;

            case 0x5c:
                switch (othType.TypeCode)
                {
                case 0x5c:
                    return(this.ConvertToTypeLimits(session, a));

                case 0x5d:
                {
                    TimestampData data = (TimestampData)a;
                    return(new TimeData((long)((int)data.GetSeconds()), this.ScaleNanos(data.GetNanos())));
                }

                case 0x5e:
                {
                    TimeData data2 = (TimeData)a;
                    return(new TimeData((long)(data2.GetSeconds() + data2.GetZone()), this.ScaleNanos(data2.GetNanos()), 0));
                }

                case 0x5f:
                {
                    TimestampData data3 = (TimestampData)a;
                    return(new TimeData((long)(((int)data3.GetSeconds()) + data3.GetZone()), this.ScaleNanos(data3.GetNanos()), 0));
                }
                }
                throw Error.GetError(0x15b9);

            case 0x5d:
                switch (othType.TypeCode)
                {
                case 0x5b:
                    return(a);

                case 0x5c:
                {
                    TimeData data4 = (TimeData)a;
                    return(new TimestampData(session.GetCurrentDate().GetSeconds() + data4.GetSeconds(), this.ScaleNanos(data4.GetNanos())));
                }

                case 0x5d:
                    return(this.ConvertToTypeLimits(session, a));

                case 0x5e:
                {
                    TimeData data5 = (TimeData)a;
                    return(new TimestampData((session.GetCurrentDate().GetSeconds() + data5.GetSeconds()) - session.GetZoneSeconds(), this.ScaleNanos(data5.GetNanos()), session.GetZoneSeconds()));
                }

                case 0x5f:
                {
                    TimestampData data6 = (TimestampData)a;
                    return(new TimestampData(data6.GetSeconds() + data6.GetZone(), this.ScaleNanos(data6.GetNanos())));
                }
                }
                throw Error.GetError(0x15b9);

            case 0x5e:
                switch (othType.TypeCode)
                {
                case 0x5c:
                {
                    TimeData data7 = (TimeData)a;
                    return(new TimeData((long)(data7.GetSeconds() - session.GetZoneSeconds()), this.ScaleNanos(data7.GetNanos()), session.GetZoneSeconds()));
                }

                case 0x5d:
                {
                    TimestampData data8 = (TimestampData)a;
                    return(new TimeData((long)(((int)data8.GetSeconds()) - session.GetZoneSeconds()), this.ScaleNanos(data8.GetNanos()), session.GetZoneSeconds()));
                }

                case 0x5e:
                    return(this.ConvertToTypeLimits(session, a));

                case 0x5f:
                {
                    TimestampData data9 = (TimestampData)a;
                    return(new TimeData((long)((int)data9.GetSeconds()), this.ScaleNanos(data9.GetNanos()), data9.GetZone()));
                }
                }
                throw Error.GetError(0x15b9);

            case 0x5f:
                switch (othType.TypeCode)
                {
                case 0x5b:
                    return(new TimestampData(((TimestampData)a).GetSeconds(), 0, session.GetZoneSeconds()));

                case 0x5c:
                {
                    TimeData data10 = (TimeData)a;
                    return(new TimestampData((session.GetCurrentDate().GetSeconds() + data10.GetSeconds()) - session.GetZoneSeconds(), this.ScaleNanos(data10.GetNanos()), session.GetZoneSeconds()));
                }

                case 0x5d:
                {
                    TimestampData data11 = (TimestampData)a;
                    return(new TimestampData(data11.GetSeconds() - session.GetZoneSeconds(), this.ScaleNanos(data11.GetNanos()), session.GetZoneSeconds()));
                }

                case 0x5e:
                {
                    TimeData data12 = (TimeData)a;
                    return(new TimestampData(session.GetCurrentDate().GetSeconds() + data12.GetSeconds(), this.ScaleNanos(data12.GetNanos()), data12.GetZone()));
                }

                case 0x5f:
                    return(this.ConvertToTypeLimits(session, a));
                }
                throw Error.GetError(0x15b9);

            default:
                throw Error.RuntimeError(0xc9, "DateTimeType");
            }
            throw Error.GetError(0x15b9);
        }
Пример #5
0
        public override object ConvertCSharpToSQL(ISessionInterface session, object a)
        {
            int  zoneSeconds;
            long normalisedTime;

            if (a == null)
            {
                return(null);
            }
            DateTime?nullable = a as DateTime?;

            if (!nullable.HasValue)
            {
                throw Error.GetError(0x15b9);
            }
            DateTime time = nullable.Value;

            switch (base.TypeCode)
            {
            case 0x5b:
                return(new TimestampData(UtlDateTime.GetNormalisedDate(UtlDateTime.ConvertTicksFromTimeZone(session.GetTimeZone(), time.Ticks) / 0x989680L)));

            case 0x5c:
            case 0x5e:
                zoneSeconds = 0;
                if (base.TypeCode != 0x5c)
                {
                    normalisedTime = time.Ticks / 0x989680L;
                    zoneSeconds    = session.GetZoneSeconds();
                    break;
                }
                normalisedTime = UtlDateTime.ConvertTicksFromTimeZone(session.GetTimeZone(), time.Ticks) / 0x989680L;
                break;

            case 0x5d:
            case 0x5f:
            {
                long ticks;
                int  zoneSeconds = 0;
                if (base.TypeCode != 0x5d)
                {
                    ticks       = time.Ticks;
                    zoneSeconds = session.GetZoneSeconds();
                }
                else
                {
                    ticks = UtlDateTime.ConvertTicksFromTimeZone(session.GetTimeZone(), time.Ticks);
                }
                long num7 = ticks / 0x989680L;
                int  num8 = ((int)(ticks - (num7 * 0x989680L))) * 100;
                return(new TimestampData(ticks / 0x989680L, DTIType.NormaliseFraction(num8, base.Scale), zoneSeconds));
            }

            default:
                throw Error.GetError(0x15b9);
            }
            normalisedTime = UtlDateTime.GetNormalisedTime(normalisedTime);
            int fraction = (int)((time.Ticks * 100L) - (normalisedTime * 0x3b9aca00L));

            return(new TimeData((long)((int)normalisedTime), DTIType.NormaliseFraction(fraction, base.Scale), zoneSeconds));
        }