【发布时间】:2017-06-05 13:29:15
【问题描述】:
我有一个 EntityDataSource,我必须过滤所有超过 30 天的项目。
我的 MSSQL 数据库方法:
protected void EntityDataSource1_Selecting(object sender, EntityDataSourceSelectingEventArgs e)
{
EntityDataSource1.WhereParameters.Clear();
EntityDataSource1.Where = "DATEDIFF(day, GETDATE(), it.CreateDate) < 30" ;
}
给出错误:DATEDIFF 无法解析为有效的类型或函数
【问题讨论】:
-
这是一个 T-SQL 数据库,比如 SQL Server 吗? DATEDIFF() 是一个 T-SQL 命令。但是,如果您使用的是 Oracle DB,则该功能不存在,并按照此处所述完成:stackoverflow.com/questions/28406397/…
-
@user1895086 TO_DATE 无法解析为有效的类型或函数
-
你能在数据库中通过查询来做到这一点吗?因为实体真的很有趣,但你必须使用可以转换为数据库查询的函数,你正在使用的那个
-
@AntoinePelletier 是的,
SELECT * FROM [User] WHERE DATEDIFF(day, GETDATE(), CreateDate) < 30工作 -
您可以使用
WHERE it.CreateDate<= NOW() - INTERVAL 1 MONTH;,前提是it.CreateDate是日期时间或时间戳类型
标签: c# asp.net entity-framework