ObjectQuery,在Where子句过滤器中传递日期时间

发布于 2024-08-10 03:43:45 字数 435 浏览 7 评论 0原文

这里如何传入日期时间值?

ObjectQuery<Item> _Query = ItemEntities.CreateQuery<Item>("Item");
_Query = _Query.Where("(it.StartDate >= 11/4/2009 5:06:08 PM)");

我上面的示例代码似乎确实有效。

即使这样,

ObjectQuery<Item> _Query = ItemEntities.CreateQuery<Item>("Item");
_Query = _Query.Where("(it.StartDate >= \"11/4/2009 5:06:08 PM\")");

我在 EDM 中也遇到了类型转换错误。

How to pass in Date Time value here?

ObjectQuery<Item> _Query = ItemEntities.CreateQuery<Item>("Item");
_Query = _Query.Where("(it.StartDate >= 11/4/2009 5:06:08 PM)");

my sample code above does seem to work.

even with this

ObjectQuery<Item> _Query = ItemEntities.CreateQuery<Item>("Item");
_Query = _Query.Where("(it.StartDate >= \"11/4/2009 5:06:08 PM\")");

I got type cast error in EDM.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ゞ记忆︶ㄣ 2024-08-17 03:43:45

以下内容应该有效:

ObjectQuery<Item> _Query = ItemEntities.CreateQuery<Item>("Item");
_Query = _Query.Where("(it.StartDate >= DATETIME'11/4/2009 17:06:08')");

请参阅文档,了解有关 ESQL 中文字的更多信息查询。

The following should work:

ObjectQuery<Item> _Query = ItemEntities.CreateQuery<Item>("Item");
_Query = _Query.Where("(it.StartDate >= DATETIME'11/4/2009 17:06:08')");

See the documentation for more information on literals in ESQL queries.

诠释孤独 2024-08-17 03:43:45

不幸的是,对我来说@pmarflee 的答案不起作用。我找到了与 MSDN 对应的另一个解决方案:

日期部分的格式必须为:YYYY-MM-DD,其中 YYYY 是四位数字
0001 到 9999 之间的数字年份值,MM 是 1 到 9999 之间的月份
12 和 DD 是给定月份 MM 的有效日期值。

时间部分的格式必须为:HH:MM[:SS[.fffffff]],其中 HH 为
0 到 23 之间的小时值,MM 是 0 到 23 之间的分钟值
59,SS 是 0 到 59 之间的第二个值,ffffffff 是
0 到 9999999 之间的小数秒值。所有值范围均为
包容性。小数秒是可选的。秒数可选
除非指定秒小数部分;在这种情况下,秒是
必需的。当未指定秒或小数秒时,
将使用默认值零。

DATETIME 符号和 DATETIME 符号之间可以有任意数量的空格
文字负载,但没有新行。

DATETIME'2006-10-1 23:11'
DATETIME'2006-12-25 01:01:00.0000000' --
与 DATETIME'2006-12-25 01:01' 相同

并且代码本身:

DateTime dateTimeValue = DateTime.Now;
// ESQL DATETIME format MUST be <yyyy-MM-dd HH:mm> format                                 
_Query = _Query.Where(string.Format("(it.StartDate >= DATETIME'{0:yyyy-MM-dd HH:mm}')",dateTimeValue);

Unfortunately for me @pmarflee's answer does not work. I've found another solution corresponding to MSDN:

The date part must have the format: YYYY-MM-DD, where YYYY is a four
digit year value between 0001 and 9999, MM is the month between 1 and
12 and DD is the day value that is valid for the given month MM.

The time part must have the format: HH:MM[:SS[.fffffff]], where HH is
the hour value between 0 and 23, MM is the minute value between 0 and
59, SS is the second value between 0 and 59 and fffffff is the
fractional second value between 0 and 9999999. All value ranges are
inclusive. Fractional seconds are optional. Seconds are optional
unless fractional seconds are specified; in this case, seconds are
required. When seconds or fractional seconds are not specified, the
default value of zero will be used instead.

There can be any number of spaces between the DATETIME symbol and the
literal payload, but no new lines.

DATETIME'2006-10-1 23:11'
DATETIME'2006-12-25 01:01:00.0000000' --
same as DATETIME'2006-12-25 01:01'

And code itself:

DateTime dateTimeValue = DateTime.Now;
// ESQL DATETIME format MUST be <yyyy-MM-dd HH:mm> format                                 
_Query = _Query.Where(string.Format("(it.StartDate >= DATETIME'{0:yyyy-MM-dd HH:mm}')",dateTimeValue);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文