我遇到了需要按日期和时间查询的情况。我正在尝试编写一个EntityQuery,其中日期和时间采用相同的格式。下面的查询不返回任何行。但是,如果我删除两个日期子句,则返回行,然后我可以检查循环结果的日期。我更愿意在查询中使用日期。
the variable ap in the query is a C# object
var query = from log in Manager.Logs
where log.StartDttm == ap.StartDttm
&& log.EndDttm == ap.EndDttm
&& log.TypeId == 1
select log;
我想出了这个解决方法,在每个日期的午夜和晚上11:59:59之间进行查询。我也不喜欢这样,但这至少减少了查询返回的行数。
var query = from log in Manager.Logs
where && log.StartDttm >= ap.StartDttmQueryBegin
&& log.StartDttm <= ap.StartDttmQueryEnd
&& log.EndDttm >= ap.EndDttmQueryBegin
&& log.EndDttm <= ap.EndDttmQueryEnd
&& log.TypeId == 1
select log;
答案 0 :(得分:0)
DevForce并不期望任何特定的日期/时间格式或在构建和执行查询时修改它们,但它不是日期格式本身,而是数据库中存储的数据的精度vs 。&#34; ap&#34;中的DateTime字段的精度导致问题的对象。
在EF中,您可以使用EntityFunctions和/或SQLFunctions API来执行日期/时间截断/格式化,但由于DevForce执行的客户端/服务器序列化和EntityQuery到ObjectQuery转换,这些在DevForce中很难使用。这些API可以在&#34;服务器端&#34;通过RPC调用的DevForce。
您的解决方法虽然可能感觉很麻烦,但可能是您的最佳选择。您还可以尝试调用存储过程或使用ESQL passthru查询,这两个查询都可以让您更好地控制生成的SQL查询。