gpt4 book ai didi

.net - 如何使用 Linq-to-Entities 在 SQL Server 2008 中查询时间戳?

转载 作者:行者123 更新时间:2023-12-02 00:36:37 27 4
gpt4 key购买 nike

我在 SQL Server 2008 中有一个 timestamp 列。

现在我需要使用从日历服务器控件中获取的日期来查询该列。

我们假设我得到了一个 DateTime dt 对象;

我需要按这个日期时间对象进行过滤,该对象返回在该日期 (dt) 记录的所有记录。

   var a = DateTime.Now.ToString();
var IsDone = from d in _le.diets
where d.log_time.Contains(a)
select d.done;

_le 是私有(private) Entity Framework 对象。

这段代码有问题:

Error 3 'byte[]' does not contain a definition for 'Contains' and the best extension method overload 'System.Linq.ParallelEnumerable.Contains(System.Linq.ParallelQuery, TSource)' has some invalid arguments f:\tests\diet\diet\DataTier\DietMovieRepository.cs 30 32 diet

Error 2 Cannot convert lambda expression to type 'string' because it is not a delegate type f:\tests\diet\diet\DataTier\DietMovieRepository.cs 30 26 diet

Error 1 Delegate 'System.Func' does not take 1 arguments f:\tests\diet\diet\DataTier\DietMovieRepository.cs 30 26 diet

Error 4 Instance argument: cannot convert from 'byte[]' to 'System.Linq.ParallelQuery' f:\tests\diet\diet\DataTier\DietMovieRepository.cs 30 32 diet

我是 EF 初学者,感谢您的帮助!

更新

在 EF 文件中

我明白了

   public static diet Creatediet(global::System.Int64 id, global::System.Boolean done, global::System.Byte[] log_time)
{
diet diet = new diet();
diet.id = id;
diet.done = done;
diet.log_time = log_time;
return diet;
}

最佳答案

SQL Server“timestamp”与时间无关(事实上,名称“timestamp”现在已被标记为弃用;“rowversion”是相同的,应该改用)。

如果你真的有一个“时间戳”,这是不可能的。如果您将日期时间设置为插入时间,那应该很简单:

DateTime start = date.Date, end = start.AddDays(1);

...
where row.log_time >= start && row.log_time < end
...

此外,如果您主要进行日期范围搜索,则 log_time 可能是聚集索引的合适候选者。或者,如果您正在执行基于天的查询,则基于整数的非聚集索引也可以工作。

关于.net - 如何使用 Linq-to-Entities 在 SQL Server 2008 中查询时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4357945/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com