public class DateRange
{
public DateTime From { get; set; }
public DateTime To { get; set; }
}
public class MyObj
{
public List<DateRange> dateRanges { get; set; }
}
public class TableA
{
[SugarColumn(IsPrimaryKey = true)]
public string id { get; set; } = string.Empty;
public string name { get; set; } = string.Empty;
public DateTime? create_utc { get; set; } = DateTime.UtcNow;
}
情境1
var list = new List<DateRange>();
list.Add(new DateRange { From = DateTime.Now.AddDays(-1), To = DateTime.Now.AddDays(0) });
list.Add(new DateRange { From = DateTime.Now.AddDays(-3), To = DateTime.Now.AddDays(-2) });
_sysDb.Queryable<TableA>().Where(a => list.Any(p => a.create_utc >= p.From && a.create_utc <= p.To)).ToList()
情境2
var list = new List<DateRange>();
list.Add(new DateRange { From = DateTime.Now.AddDays(-1), To = DateTime.Now.AddDays(0) });
list.Add(new DateRange { From = DateTime.Now.AddDays(-3), To = DateTime.Now.AddDays(-2) });
var obj = new MyObj { dateRanges = list };
_sysDb.Queryable<TableA>().Where(a => obj.dateRanges.Any(p => a.create_utc >= p.From && a.create_utc <= p.To)).ToList()
環境
.Net 7 Oracle 11g SqlSugarCore 5.1.4.88
驗證
定義
情境1
情境2
問題
延伸自#1154, 上述情境1跟情境2的操作目前皆會翻車, 且為不同類型錯誤
情境1: p.From 與 p.To 會直接被帶入語法中, 無法識別
情境2: p.From 與 p.To 被解讀為以下格式
cast('2023-07-20 17:59:42.755' as TIMESTAMP)
, 出現錯誤 "ORA-01843: 不是有效的月份"*create_utc在Oracle上的型別為Date