【问题标题】:ObjectQuery, passing Time in Where clauseObjectQuery,在 Where 子句中传递时间
【发布时间】:2013-05-08 15:39:12
【问题描述】:

如何构造 ObjectQuery 的 Where 子句,我将在其中仅查询 DateTime 列的时间部分?我已经尝试了以下方法,但它不起作用。我在 Convert 上遇到无效异常。

 ObjectQuery<Item> _Query = ItemEntities.CreateQuery<Item>("Item");
_Query = _Query.Where("Convert(VARCHAR,it.START_TIME,114) > '{0}'", startTime.TimeOfDay);

另外,我使用 Oracle 作为数据库。所以我尝试了to_char 而不是转换,但我仍然得到同样的错误。

谢谢。

【问题讨论】:

  • 我的问题在于查询的构建。由于我使用 ObjectQuery 从数据库中检索数据,因此我需要如何获取其中的 TIME 部分。START_TIME (这是一个日期时间列)。我试过 _Query.Where("TO_CHAR(it.START_TIME, 'hh24:mi:ss')... 但我也遇到了异常。
  • 添加一个你得到的例外。
  • "'to_char' 无法解析为有效的类型或函数

标签: c# oracle objectquery


【解决方案1】:

您应该能够使用TO_CHAR 从日期中获取时间部分,然后将其转换为系统类型,例如

TO_DATE(TO_CHAR(it.START_TIME,'HH24:MI:SS'), 'hh24:mi:ss') from dual

如果ObjectQuery 不支持TO_CHAR,请尝试使用Extract 并手动建立时间,例如

TO_DATE(EXTRACT(HOUR FROM it.START_TIME) || ':' || EXTRACT(MINUTE FROM it.START_TIME) || ':' || EXTRACT(SECOND FROM it.START_TIME) FROM DUAL, 'HH24:MI:SS');

【讨论】:

  • 我的问题是 ObjectQuery 无法将 TO_CHAR 识别为有效类型或函数。
猜你喜欢
  • 2010-12-12
  • 2021-01-18
  • 1970-01-01
  • 1970-01-01
  • 2019-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多