问题描述
传入参数:开始时间、结束时间数据库有个日期字段数据类型是字符串(字段属性不能修改)查询2个时间段内的数据。请问用Ef语句应该怎么写??EntityFunctionsSqlFunctionsDbFunctions都不行EntityFunctions.DiffDays(SqlFunctions.DateAdd("Day",0,t.JB_RQ),DateTime.Now)>0--》错误类型“System.Data.Entity.SqlServer.SqlFunctions”上指定的方法“System.Nullable`1[System.DateTime]DateAdd(System.String,System.Nullable`1[System.Double],System.String)”无法转换为LINQtoEntities存储表达式。
解决方案
本帖最后由 hongliangc5dn 于 2016-04-05 09:16:07 编辑
解决方案二:
DateTime?currentDate=System.DateTime.Now;EntityFunctions.DiffDays(DateTime.Parse(t.JB_RQ),currentDate)>0
解决方案三:
frompingetChannelListDatawhereConvert.ToDateTime(p.ChannelStartDate)>=Convert.ToDateTime(channelstartdate)&&Convert.ToDateTime(p.ChannelEndDate)<=Convert.ToDateTime(channelenddate)selectp
解决方案四:
数据库是字符串,那就只能用字符串的比较方式了吧。。在EF里面似乎是不能用DateTime.Parse,Convert.ToDateTime之类的方法,这些不是数据库可以识别的方法。看你的问题,如果用字符串比较的话,先要知道数据库里面时间的格式,然后把当前时间转换成字符串,格式必须跟数据库里的字符串格式一致,然后使用compare方法,比如这样:stringnow=DateTime.Now.ToString("yyyy-MM-ddHH:mm:ss");startDate.CompareTo(now)>0