与存储在数据库中的日期字段执行日期比较

时间:2016-06-14 17:04:40

标签: linq c#-4.0 linq-to-sql

我正在尝试将今天的日期与数据库中的日期进行比较。 今天的日期保存在数据库中,如下所示:2016-06-14 00:00:00.000

dtTodaysDate生成如下:2016年6月14日上午11:51:09

这是方法

         public string CheckCreateOneProjectReportPerDay(string strprojectId)
                {
                    string checkReturnValue = "DoesNotExist";
                    DateTime dtTodaysDate = DateTime.Now;

                    var checkProjectRec =
                        _objContext.tbl_Project_Status_MSTR.Where(
                            s => s.ProjectID == strprojectId && s.StatusDate == dtTodaysDate);

                    if (checkPrjDate.Any())
                    {
                        checkReturnValue = "RecordExist";
                    }

                    return checkReturnValue;
                }

我尝试在下面的查询中使用关键字contains但没有运气

            var checkProjectRec =
                        _objContext.tbl_Project_Status_MSTR.Where(
                            s => s.ProjectID == strprojectId && s.StatusDate == dtTodaysDate);  

上面的查询将始终不返回任何内容,因为它们不匹配。有没有更好的办法 做这个比较?

1 个答案:

答案 0 :(得分:0)

您的数据库列StatusDate看起来只存储其DateTime对象的日,月和年。

我建议更改你的linq查询,只搜索dtTodaysDate的值。

尝试一下:

var checkProjectRec =
                    _objContext.tbl_Project_Status_MSTR.Where(
                        s => s.ProjectID == strprojectId 
                            && s.StatusDate.Year == dtTodaysDate.Year
                            && s.StatusDate.Month == dtTodaysDate.Month
                            && s.StatusDate.Day == dtTodaysDate.Day);

Linq-to-SQL: DateTime Methods也许值得研究。