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(); }
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(); }
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); } }
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(), });
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); } }
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); } }
public static int DatePart(Sql.DateParts part, DateTimeOffset date) => 0;
//[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 {