规范函数“EntityFunctions.TruncateTime"在 MYSQL 中不存在 [英] Canonical Function "EntityFunctions.TruncateTime" does not exist in MYSQL

查看:23
本文介绍了规范函数“EntityFunctions.TruncateTime"在 MYSQL 中不存在的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试运行此查询:

I'm trying to run this query:

DateTime DDate=DateTime.Today; //Today's date without Time
var v= db.measurements.Where(m => EntityFunctions.TruncateTime(m.InDate) == DDate);

它只返回两个日期相等的对象,忽略时间部分.

It just returns objects where those two dates are equal, ignoring the time part.

但我收到:

{"FUNCTION [数据库].TruncateTime 不存在"}

{"FUNCTION [database].TruncateTime does not exist"}

堆栈跟踪:

at MySql.Data.MySqlClient.MySqlStream.ReadPacket()
at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId)
at MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int64& insertedId)
at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
at MySql.Data.Entity.EFMySqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)

我正在使用:

  • C# Visual Studio 2010
  • EntityFramework 4 数据库优先
  • 网络框架 4
  • MYSQL 服务器 5.6

MySQL.Data 和 MySQL.Data.Entity 的版本是 6.6.5.0

The version of MySQL.Data and MySQL.Data.Entity is 6.6.5.0

MySQL 支持 TruncateTime.

同样的事情发生在这个人身上.

推荐答案

我无法解决,所以我只是在数据库中创建了一个名为TruncateTime"的函数.

I couldn't resolve it, so I just created a Function named "TruncateTime" in the database.

Create FUNCTION TruncateTime(dateValue DateTime) RETURNS date
return Date(dateValue);

它有效,但我不喜欢它.

And it works, but I don't like it.

这些人做了类似的事情:

These people did similar things:

EntityFunctions.AddSeconds for MySQL 的替代方案

CurrentUtcDateTime 不存在 - 实体框架和 MySql

所以现在我认为这可能是不必要的,我可以直接从数据库中调用它并仍然获取实体,如下所示:

So now I think that might be unnecessary and I can just call it directly from the database and still get entities, something like this:

var x = db.ExecuteStoreQuery<Measurement>(@"SELECT field1,field2
FROM   Measurements
WHERE  Date(InDate) = {0}", DDate);

仅此而已.

这篇关于规范函数“EntityFunctions.TruncateTime"在 MYSQL 中不存在的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆