DevForce 2010 EntityQuery 格式化日期

DevForce 2010 Formatting Dates for EntityQuery

我 运行 遇到了需要按日期和时间查询的情况。我正在尝试编写日期和时间格式相同的 EntityQuery。下面的查询 returns 没有行。但是,如果我删除这两个日期子句,则会返回行,然后我可以检查结果中循环的日期。我更愿意在查询中使用日期。

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:59pm 之间。我也不喜欢这样,但这至少减少了查询返回的行数。

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;

DevForce 不期望任何特定的 date/time 格式或在构建和执行查询时修改它们,但这不是日期格式本身,而是存储在数据库中的数据与导致问题的 "ap" 对象中 DateTime 字段的精度。

在 EF 中,您可以使用 EntityFunctions and/or SQLFunctions API 来执行 date/time truncating/formatting,但是由于 client/server DevForce 执行的序列化和 EntityQuery 到 ObjectQuery 的转换。这些 API 可以通过 RPC 调用在 "server side" 的 DevForce 上工作。

您的解决方法虽然可能感觉很麻烦,但可能是您的最佳选择。您还可以尝试调用存储过程或使用 ESQL passthru 查询,这两种方法都可以让您更好地控制生成的 SQL 查询。