我正在努力比较MVC中的日期。我尝试了所有的方法,但仍然没有什么进展顺利。似乎很奇怪。
这是我的日期时间文本框,以JQuery日历为界。
@Html.TextBoxFor(x => x.dateofAction, ViewBag.filterdateTime as string, new { @id = "dateofAction", @placeholder = "Date Of Action", @class = "form-control datepicker validate[required, custom[date,future[min]]]", style = "width:80%;height:20px;" })
这是我的模型字段。
public DateTime? dateofAction { get; set; }
最后这是我的查询
upld_id = (from c in db.ts_upld_doc where (c.upld_ModifiedDateTime).Value.Year == datemodified.Year select c.upld_docid).ToArray();
我点击断点并检查。我发现价值如下。
11/10/2016 12:00:00 AM
- 用户提供的日期2016-10-11 13:52:53.583
- Sql表(upld_ModifiedDateTime)我试过很多方面,比如只比较日期,日期,月份,年份,但对我来说没什么用。有些专家可以告诉我为什么会遇到这个问题吗?非常感谢你。
答案 0 :(得分:1)
更改查询以选择当天开始和结束之间的值
DateTime start = datemodified.Date;
DateTime end = start.AddDays(1);
upld_id = (from c in db.ts_upld_doc
where c.upld_ModifiedDateTime >= start && c.upld_ModifiedDateTime < end
select c.upld_docid).ToArray();
或
upld_id = db.ts_upld_doc
.Where(c => where c.upld_ModifiedDateTime >= start && c.upld_ModifiedDateTime < end)
.Select(c => c.upld_docid);
答案 1 :(得分:0)
首先从upld_ModifiedDateTime中删除时间,然后使用DateTime.Compare方法进行比较,如下所示:
upld_id = (from c in db.ts_upld_doc where
DateTime.Compare(
new DateTime(c.upld_ModifiedDateTime.Year, c.upld_ModifiedDateTime.Month, c.upld_ModifiedDateTime.Day))
,datemodified) == 0
select c.upld_docid).ToArray();
答案 2 :(得分:0)
您应该将DbFunctions与EF6一起使用。
var dateValue = datemodified.Date;
var upld_id = (
from c in db.ts_upld_doc
where DbFunctions.TruncateTime(c.upld_ModifiedDateTime) == dateValue
select c.upld_docid).ToArray();
如果您使用的是旧版EF,请使用EntityFunctions
var dateValue = datemodified.Date;
var upld_id = (
from c in db.ts_upld_doc
where EntityFunctions.TruncateTime(c.upld_ModifiedDateTime) == dateValue
select c.upld_docid).ToArray();
答案 3 :(得分:0)
datemodified
在哪里宣布,它是如何得到它的价值的?
如果通过Controller中的Action方法声明并设置datemodified
,则您选择的参数名称可能是问题。
所以这不起作用:
// MVC ignores Form field 'dateofAction' because it expects 'datemodified'.
[HttpPost]
ActionResult Index(DateTime datemodified) { ... }
这应该有效:
// MVC uses Form field 'dateofAction' to set parameter 'dateofAction'.
[HttpPost]
ActionResult Index(DateTime dateofAction) { ... }