如何在LINQ查询中将日期时间值与毫秒精度进行比较

时间:2019-03-26 16:49:16

标签: c# linq tsql

我正在运行一个非常简单的LINQ查询,如下所示:

List<Event> lstEvents = db.Events.Where(e => e.SystemDatetime <= eventItem.SystemDatetime).ToList();

SystemDateTime是数据库中的DateTime列,它以yyyy-mm-dd hh:MM:ss.fff格式存储日期时间。 DateTime比较只能与不够精确的秒进行比较。

如何将LINQ语句中的两个值与毫秒进行比较?

2 个答案:

答案 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]