datetime如何工作以及如何在Windows窗体ADO Entities中比较两个日期?

乔纳斯·威兰德

我的数据库SQL Server中有“ DepositDate”列,具有“ Deposit”表,其类型为datetime。我有今天日期的行,其中之一是2019-02-14 22:26:50.000今天的日期是相同的,我的意思是2019-02-14但是当尝试通过以下代码获取今天的所有行时,它没有工作。我认为随着时间的流逝,时间会有一些变化。但是现在写,我只对一天感兴趣,但是我想保留数据库中的datetime类型。因此,我必须在搜索的日期上加上时间吗?我使用Linq和Entities

我喜欢这样,我没有收到错误但没有找到该行。返回空的datagridview

DateTime TodayDate = Convert.ToDateTime(DateTime.Now.ToString());
 var deposit = (from u in db.Deposit
                                   where u.DepositDate == TodayDate
                                   select u).ToList();
                    if (deposit != null)
                    {
                        dgvDeposit.DataSource = null;
                        dgvDeposit.DataSource = deposit;
                    }

我什至尝试但我却犯错了

LINQ to ADO实体中不支持日期

DateTime TodayDate = Convert.ToDateTime(DateTime.Now.Date);
where u.DepositDate.Value.Date == TodayDate

非常感谢您的帮助

伊戈尔

如果要使用可能包含的任何索引,则必须在开始日期和结束日期之间进行过滤DepositDate如果您不关心是否存在规范日期函数,则可以使用该函数从数据库值中剥离时间。

DateTime today = DateTime.Today;
DateTime tomorrow = today.AddDays(1);

var deposit = (from u in db.Deposit
               where u.DepositDate >= today && u.DepositDate < tomorrow
               select u).ToList();

或者作为lambda

var deposits = db.Deposit
                .Where(u => u.DepositDate >= today && u.DepositDate < tomorrow)
                .ToList();

作为附带说明和意见,通常建议DbSet<T>对您的属性DbContext(例如db.Deposits进行复数处理您的变量也deposit一样,因为它的类型List<Deposit>是一个集合(我更改了第二个代码示例)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章