コード例 #1
0
ファイル: Sql.DateTime.cs プロジェクト: ywscr/linq2db
        public static int?DatePart([SqlQueryDependent] Sql.DateParts part, [ExprParameter] DateTime?date)
        {
            if (date == null)
            {
                return(null);
            }

            switch (part)
            {
            case Sql.DateParts.Year: return(date.Value.Year);

            case Sql.DateParts.Quarter: return((date.Value.Month - 1) / 3 + 1);

            case Sql.DateParts.Month: return(date.Value.Month);

            case Sql.DateParts.DayOfYear: return(date.Value.DayOfYear);

            case Sql.DateParts.Day: return(date.Value.Day);

            case Sql.DateParts.Week: return(CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(date.Value, CalendarWeekRule.FirstDay, DayOfWeek.Sunday));

            case Sql.DateParts.WeekDay: return(((int)date.Value.DayOfWeek + 1 + Sql.DateFirst + 6) % 7 + 1);

            case Sql.DateParts.Hour: return(date.Value.Hour);

            case Sql.DateParts.Minute: return(date.Value.Minute);

            case Sql.DateParts.Second: return(date.Value.Second);

            case Sql.DateParts.Millisecond: return(date.Value.Millisecond);
            }

            throw new InvalidOperationException();
        }
コード例 #2
0
ファイル: Sql.DateTime.cs プロジェクト: tomaShaw/linq2db
        public static DateTime?DateAdd([SqlQueryDependent] Sql.DateParts part, double?number, DateTime?date)
        {
            if (number == null || date == null)
            {
                return(null);
            }

            switch (part)
            {
            case Sql.DateParts.Year: return(date.Value.AddYears((int)number));

            case Sql.DateParts.Quarter: return(date.Value.AddMonths((int)number * 3));

            case Sql.DateParts.Month: return(date.Value.AddMonths((int)number));

            case Sql.DateParts.DayOfYear: return(date.Value.AddDays(number.Value));

            case Sql.DateParts.Day: return(date.Value.AddDays(number.Value));

            case Sql.DateParts.Week: return(date.Value.AddDays(number.Value * 7));

            case Sql.DateParts.WeekDay: return(date.Value.AddDays(number.Value));

            case Sql.DateParts.Hour: return(date.Value.AddHours(number.Value));

            case Sql.DateParts.Minute: return(date.Value.AddMinutes(number.Value));

            case Sql.DateParts.Second: return(date.Value.AddSeconds(number.Value));

            case Sql.DateParts.Millisecond: return(date.Value.AddMilliseconds(number.Value));
            }

            throw new InvalidOperationException();
        }
コード例 #3
0
        public void DatepartDynamic(
            [DataSources(TestProvName.AllInformix, DateOnlySkipProviders)] string context,
            [Values(
                 Sql.DateParts.Day,
                 Sql.DateParts.Month,
                 Sql.DateParts.Year
                 )] Sql.DateParts datepart)
        {
            using (var db = GetDataContext(context))
                using (db.CreateLocalTable(Transaction.AllData))
                {
                    var expected =
                        from t in Transaction.AllData select Sql.DatePart(datepart, t.TransactionDate);

                    var result =
                        from t in db.GetTable <Transaction>() select Sql.AsSql(Sql.DatePart(datepart, t.TransactionDate));

                    AreEqual(expected, result);
                }
        }
コード例 #4
0
        public static int?DatePart(this Sql.ISqlExtension?ext, Sql.DateParts part, [ExprParameter] DateTime?date)
        {
            if (date == null)
            {
                return(null);
            }

            return(part switch
            {
                Sql.DateParts.Year => date.Value.Year,
                Sql.DateParts.Quarter => (date.Value.Month - 1) / 3 + 1,
                Sql.DateParts.Month => date.Value.Month,
                Sql.DateParts.DayOfYear => date.Value.DayOfYear,
                Sql.DateParts.Day => date.Value.Day,
                Sql.DateParts.Week => CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(date.Value, CalendarWeekRule.FirstDay, DayOfWeek.Sunday),
                Sql.DateParts.WeekDay => ((int)date.Value.DayOfWeek + 1 + Sql.DateFirst + 6) % 7 + 1,
                Sql.DateParts.Hour => date.Value.Hour,
                Sql.DateParts.Minute => date.Value.Minute,
                Sql.DateParts.Second => date.Value.Second,
                Sql.DateParts.Millisecond => date.Value.Millisecond,
                _ => throw new InvalidOperationException(),
            });
コード例 #5
0
        public void DatepartDynamic(
            [DataSources(ProviderName.Informix)] string context,
            [Values(
                 Sql.DateParts.Day,
                 Sql.DateParts.Hour,
                 Sql.DateParts.Minute,
                 Sql.DateParts.Month,
                 Sql.DateParts.Year,
                 Sql.DateParts.Second
                 )] Sql.DateParts datepart)
        {
            using (var db = GetDataContext(context))
            {
                var expected =
                    from t in Types select Sql.DatePart(datepart, t.DateTimeValue);

                var result =
                    from t in db.Types select Sql.AsSql(Sql.DatePart(datepart, t.DateTimeValue));

                AreEqual(expected, result);
            }
        }
コード例 #6
0
        public void AddDynamicFromColumn(
            [DataSources(ProviderName.Informix)] string context,
            [Values(
                 Sql.DateParts.Day,
                 Sql.DateParts.Hour,
                 Sql.DateParts.Minute,
                 Sql.DateParts.Month,
                 Sql.DateParts.Year,
                 Sql.DateParts.Second
                 )] Sql.DateParts datepart)
        {
            using (var db = GetDataContext(context))
            {
                var expected =
                    (from t in Types select Sql.DateAdd(datepart, t.SmallIntValue, t.DateTimeValue)).Select(d =>
                                                                                                            Truncate(d.Value, TimeSpan.TicksPerSecond));
                var result =
                    (from t in db.Types select Sql.AsSql(Sql.DateAdd(datepart, t.SmallIntValue, t.DateTimeValue)))
                    .ToList().Select(d => Truncate(d.Value, TimeSpan.TicksPerSecond));

                AreEqual(expected, result);
            }
        }
コード例 #7
0
 public static int DatePart(Sql.DateParts part, DateTimeOffset date) => 0;
コード例 #8
0
ファイル: DB2iSeriesSql_TB.cs プロジェクト: X10sions/X10sions
 //[xDatePartExpressionAttribute_TB("DB2.iSeries", "{{1}} + {0}", 60, true, new string[] {
 //  "{0} Year",
 //  "({0} * 3) Month",
 //  "{0} Month",
 //  "{0} Day",
 //  "{0} Day",
 //  "({0} * 7) Day",
 //  "{0} Day",
 //  "{0} Hour",
 //  "{0} Minute",
 //  "{0} Second",
 //  "({0} * 1000) Microsecond"
 //}, 0, new int[] {
 //  1,
 //  2
 //})]
 public static DateTime?DateAdd(Sql.DateParts part, double?number, DateTime?d) => part switch
 {