在ServiceStack的Ormlite中处理日期和日期时间

问题描述 投票:1回答:1

我正在使用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的情况下解决这个问题?

c# sql oracle ormlite-servicestack
1个回答
3
投票

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

 var Tomorrow = Today.AddDays(1);
 var events = db.From<Event>()
                .Where(row => row.Event_Date >= Today &&
                              row.Event_Date < Tomorrow);
© www.soinside.com 2019 - 2024. All rights reserved.