我有一个像这样的数据库字段:
Timestamp varchar(19) utf8mb4_unicode_ci
包含这样的时间戳(字符串)
"2013-05-29 00:00:00"
我正在使用实体框架,我想按时间过滤 - 这意味着我希望所有条目都有时间戳> (现在的间隔)。 代码看起来像这样
var query = from r in db.route
where
r.timestamp > (now-interval);
select r;
我该怎么做?
答案 0 :(得分:1)
我的第一个建议是修复数据库,以便将日期值存储为正确的日期类型。这将解决许多问题并提高搜索性能。但是,在(不太可能)您不能这样做的情况下,并且该列中的值的格式与您在问题中指定的完全匹配,您可以将本地时间戳变量转换为字符串并进行比较直。由于您显示的格式具有与日期顺序相同的字母数字排序,因此它应该有效:
//It's important that this is done here and not inline with the Linq query
var nowInterval = timeStamp.ToString("yyyy-MM-dd HH:mm:ss");
var query = from r in db.route
where string.Compare(r.timestamp, nowInterval, StringComparison.Ordinal) > 0
select r;