我正在运行一个非常简单的LINQ查询,如下所示:
List<Event> lstEvents = db.Events.Where(e => e.SystemDatetime <= eventItem.SystemDatetime).ToList();
SystemDateTime是数据库中的DateTime列,它以yyyy-mm-dd hh:MM:ss.fff格式存储日期时间。 DateTime比较只能与不够精确的秒进行比较。
如何将LINQ语句中的两个值与毫秒进行比较?
答案 0 :(得分:0)
您可以在C#中检索DateTime
对象的总毫秒数。这样,您现有的比较将可以更高精度地工作。
List<Event> lstEvents = db.Events.Where(e => e.SystemDatetime.TotalMilliseconds <= eventItem.SystemDatetime.TotalMilliseconds).ToList();
答案 1 :(得分:0)
DateTime比较仅与不够精确的最近秒进行比较。
这不是事实。这取决于DateTime列的数据类型。选择datetime2数据类型以提高准确性。
请参见下面的SQL。
DECLARE @datetimes TABLE ([Column1] DATETIME2(7), [Column2] DATETIME2(7))
INSERT INTO
@datetimes
VALUES
('2019-03-26 20:00:00.123', '2019-03-26 20:00:00.124')
SELECT
*
FROM
@datetimes
WHERE
[Column1] <> [Column2]
SELECT
*
FROM
@datetimes
WHERE
[Column1] = [Column2]