使用实体框架比较日期时间 24 小时与 AM/PM 格式

发布于 2024-12-06 11:04:53 字数 1289 浏览 0 评论 0原文

我是实体框架的新手。我在比较日期时间值时遇到问题,因为在我的 SQL Server 数据库中,日期时间值存储为 24 小时格式,而应用程序将时间格式视为 AM/PM 格式。我尝试解析这些字段,但收到错误消息:

LINQ to Entities 不支持指定的类型成员“日期”。仅支持初始值设定项、实体成员和实体导航属性。>

这是我尝试过的:(如果找到任何记录,则返回 true 或 false)

<pre><code>
     return !(DB.Eventos.Where(
                x =>
                (x.Fecha_inicio_evento.Date >= eventos.Fecha_inicio_evento.Date
                &&
                x.Fecha_inicio_evento.TimeOfDay >= eventos.Fecha_inicio_evento.TimeOfDay
                &&
                x.Fecha_inicio_evento.Date <= eventos.Fecha_fin_evento.Date
                &&
                x.Fecha_inicio_evento.TimeOfDay <= eventos.Fecha_fin_evento.TimeOfDay)
                ||
                (x.Fecha_fin_evento.Date >= eventos.Fecha_inicio_evento.Date
                &&
                x.Fecha_fin_evento.TimeOfDay >= eventos.Fecha_fin_evento.TimeOfDay
                &&
                x.Fecha_fin_evento.Date <= eventos.Fecha_fin_evento.Date
                &&
                x.Fecha_fin_evento.TimeOfDay <= eventos.Fecha_fin_evento.TimeOfDay
                )).Any());
</code></pre>

您知道有什么方法可以执行此操作吗?

I am new with Entity Framework. I am having problems comparing datetime values since in my SQL Server database the datetime values are stored as 24hs format and the application is taking the time format as A.M./P.M. format. I tried to parse the fields but I get the error message:

The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.>

Here is what I tried: (this returns true or false if there are any record found)

<pre><code>
     return !(DB.Eventos.Where(
                x =>
                (x.Fecha_inicio_evento.Date >= eventos.Fecha_inicio_evento.Date
                &&
                x.Fecha_inicio_evento.TimeOfDay >= eventos.Fecha_inicio_evento.TimeOfDay
                &&
                x.Fecha_inicio_evento.Date <= eventos.Fecha_fin_evento.Date
                &&
                x.Fecha_inicio_evento.TimeOfDay <= eventos.Fecha_fin_evento.TimeOfDay)
                ||
                (x.Fecha_fin_evento.Date >= eventos.Fecha_inicio_evento.Date
                &&
                x.Fecha_fin_evento.TimeOfDay >= eventos.Fecha_fin_evento.TimeOfDay
                &&
                x.Fecha_fin_evento.Date <= eventos.Fecha_fin_evento.Date
                &&
                x.Fecha_fin_evento.TimeOfDay <= eventos.Fecha_fin_evento.TimeOfDay
                )).Any());
</code></pre>

Do you know any way to perform that?

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

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

发布评论

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

评论(1

你的笑 2024-12-13 11:04:53

数据库.Net不以格式存储日期。格式只是对诸如 ToString 之类的方法如何执行任务的描述。因此可以使用运算符以标准方式进行比较。您遇到的错误与实体框架将 Linq 查询转换为 sql 相关,而 Date 则不然支持。

如果通过将比较分成两部分来比较日期,那么这是不正确的。 Id .Date.TimeofDay 的更高比较,不应该改变结果,但它确实改变了。使用 Fecha_inicio_evento = 2011-01-02 01:01:01 和 Fecha_inicio_evento = 2011-01-01 02:01:01 检查结果

Database or .Net does not store date in format. Format is only description for methods like ToString how to do the task. So comparison can be done standard way with operator. Error you're getting is connected with translation Linq query to sql by entity framework, simply Date isn't upported.

If by splitting comparison to 2 parts you wanted to compare the dates its not correct. Id .Date is higher comparison of the .TimeofDay shouldn't change result but it does. Chech result with Fecha_inicio_evento = 2011-01-02 01:01:01 and Fecha_inicio_evento = 2011-01-01 02:01:01

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文