EF日期时间格式

问题描述 投票:1回答:2

我首先使用EF 6代码,并且需要在dateTime上以特定格式执行sql之类的sql,例如:

我的第一次尝试是脱离常规:

var users = context.User
       .Where(x => x.BirthDate.ToString("dd/MMM/yyyy h:mm tt").Contains(searchTerm).ToList()

引发异常,因为EF不知道如何转换,而DateTime.ToString()转换为SQL,这是有道理的。

到目前为止,我发现的最佳解决方案来自以下页面:Entity Framework 6 ToString(), formatting (DateTime format), query intercept,答案人使用以下功能:SqlFunctions.DatePartDbFunctions.Right生成字符串,EF可以针对我的情况在其中执行Contains我现在特别想以MMM格式使用月份时,格式必须为"dd/MMM/yyyy hh:mm tt"(2017年1月20日上午08:22)。

附带说明,如果还有另一种方法可以通过创建我自己的,从DbFunctionsSqlFunctions类扩展的函数来实现这一目标,这也可以解决问题。

我首先使用EF 6代码,并且需要在dateTime上以特定格式执行sql,例如IE:类似的事情是:我的第一次尝试是类似的事情:var users = context.User ...

c# entity-framework linq datetime iqueryable
2个回答
0
投票

要以MMM格式获得月份,可以使用:


0
投票

如果搜索特定格式的日期列很重要,那么我建议向表中添加一个计算列以显示日期/时间为字符串。像这样的解决方案要提防的是性能。对于较小到中等大小的表/数据库,这是可以接受的,但是您需要监视性能并避免使用像这样的技术作为拐杖,因为随着系统的发展,它可能会重新咬住您。

© www.soinside.com 2019 - 2024. All rights reserved.