Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ServiceStack的Ormlite中处理日期和日期时间_C#_Sql_Oracle_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">ormlite Servicestack - Fatal编程技术网 ormlite-servicestack,C#,Sql,Oracle,ormlite Servicestack" /> ormlite-servicestack,C#,Sql,Oracle,ormlite Servicestack" />

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

C# 在ServiceStack的Ormlite中处理日期和日期时间,c#,sql,oracle,ormlite-servicestack,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(eve

我正在使用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,而今天只是一个始终以00:00:00结尾的日期,因此where子句永远不匹配。我想将row.Event_Date转换为日期。我尝试过Event_Date.Date和Event_Date.toString gmm/dd/yyyy等,但这不起作用,因为OrmLite无法很好地将这些类型的转换转换转换为Oracle。例如,当我执行Event_Date.toString gmm/dd/yyyy时,OrmLite将其转换为Oracle中的varchar1000强制转换,但有点忘记了传递字符串格式


有没有办法不使用原始sql来解决这个问题?

您只需将1天添加到今天,然后使用&&运算符选择所有具有正确日期部分的事件日期,而不考虑时间部分

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

有趣的解决方案!我觉得我宁愿使用原始sql而不是这样做,但这是解决问题的一种聪明方法,我不知道ormlite,但它应该在适当的sql中转换该表达式,如果您在该Event_Date列上有一个索引,那么这应该非常快,我建议在处理时忘记字符串转换dates@jgozal不知道为什么在不需要的情况下会使用原始SQL,但是您可以在OrmLite的SQL表达式中添加原始SQL条件,其中q.Wherefield={0},value@mythz我之所以这么做,是因为原始sql比原始sql更具声明性this@jgozal我不同意,这正是我在C中进行范围查询的方式。