where 子句中的日期时间条件无法正常工作

0 sql t-sql sql-server datetime where-clause

我的表中有一行第一列日期时间类型:

2021-11-01 08:51:56.123 102 296 
Run Code Online (Sandbox Code Playgroud)

当我使用下面的选择命令时,我得到相同的结果(这一行):

select * from  cmd where timestamp = convert(datetime, '2021-11-01 08:51:56.122')
select * from  cmd where timestamp = convert(datetime, '2021-11-01 08:51:56.123')
select * from  cmd where timestamp = convert(datetime, '2021-11-01 08:51:56.124')
Run Code Online (Sandbox Code Playgroud)

我请求只有第二个命令选择该行。

怎么做?

SQL Server 版本为 14

Pre*_*red 5

DATETIME精度为(约)0.003 秒。这意味着它只能表示每三千秒,其他所有内容都会四舍五入到 0.000、0.003 或 0.007 秒的增量,如下表所示。

User-specified value    System stored value
01/01/98 23:59:59.999   1998-01-02 00:00:00.000
01/01/98 23:59:59.995

01/01/98 23:59:59.996

01/01/98 23:59:59.997

01/01/98 23:59:59.998   1998-01-01 23:59:59.997
01/01/98 23:59:59.992

01/01/98 23:59:59.993

01/01/98 23:59:59.994   1998-01-01 23:59:59.993
01/01/98 23:59:59.990

01/01/98 23:59:59.991   1998-01-01 23:59:59.990
Run Code Online (Sandbox Code Playgroud)

您可以使用DATETIME2(3)代替来DATETIME获得更高的精度。

有关更多详细信息,请阅读https://learn.microsoft.com/en-us/sql/t-sql/data-types/datetime-transact-sql?view=sql-server-ver15