我有一个带有datetime2字段的表,我需要从今天的日期中获取所有行。相当奇怪(在我看来,但我确信这是有正当理由的),如果我这样做:
MyTable.Where(t => t.Date == DateTime.Today).ToList()
即使有今天的日期,它也不会返回任何内容。
我在这里缺少什么?我认为datetime2允许你这样查询而不是必须使用大于和小于指定时间帧?
修改
我尝试在Linq to SQL中使用DateTime2表示的.Date部分:
MyTable.Where(t => t.Date.Date == DateTime.Today).ToList()
但我仍然一无所获。然而,在我的数据库中,有一些值2011-08-05 00:00:00.0000000
的行显然是今天。
再次修改 我已经运行了查询:
List<string> dates = MyTable.Select(t => t.Date.Date.ToString()).ToList();
我得到的结果如2011-08-05
,所以这部分显然有用。
然而,当我跑
时DateTime.Today.Date.ToString()
我得到08/05/2011 00:00:00
。这个时间部分的增加会导致问题吗?我该如何删除它?
编辑3
使用代码使其工作:
MyTable.Where(t => t.Date.Date.ToString() == DateTime.Today.Date.ToString("yyyy-dd-MM")).ToList();
虽然这看起来很hacky(在比较之前转换为字符串)并且肯定必须有更清洁的方式?
答案 0 :(得分:1)
听起来数据库中的日期实际上并不是今天(5月8日)。可能是8月5日。
答案 1 :(得分:0)
看起来你的datetime2字段叫做Date。您需要使用此Date字段的Date属性来忽略时间。
MyTable.Where(t => t.Date.Date == DateTime.Today).ToList()