在ServiceStack的Ormlite

时间:2018-03-02 19:10:30

标签: c# sql oracle ormlite-servicestack

我正在使用Ormlite.Oracle做类似的事情:

using (var db = dbFactory.Open())
            {
                var events = db.From<Event>()
                      .Where(row => row.Event_Date == Today);

                List<Event> results = db.Select(events);

                db.Close();
                return results;
            }

问题是row.Event_Date是一个DateTime而Today只是一个始终在00:00:00结束的日期,所以where子句永远不会匹配。我想将row.Event_Date转换为日期。我已经尝试了Event_Date.DateEvent_Date.toString("MM/dd/yyyy")等等。但这并不起作用,因为OrmLite并没有很好地将这些类型的转换转换为Oracle。例如,当我执行Event_Date.toString("MM/dd/yyyy")时,OrmLite将其转换为Oracle中的varchar(1000)转换,但有点忘记了传递字符串格式。

有没有办法在不使用原始sql的情况下解决这个问题?

1 个答案:

答案 0 :(得分:3)

您可以在今天添加1天,然后使用&amp;&amp;运算符选择具有正确日期部分的所有Event_Date而不考虑时间部分

 var Tomorrow = Today.AddDays(1);
 var events = db.From<Event>()
                .Where(row => row.Event_Date >= Today &&
                              row.Event_Date < Tomorrow);