SQL Server 2014 以秒为单位插入/更新 smalldatetime 值

The*_*age 2 sql sql-server date smalldatetime

我在 SQL Server 中的 smalldatetime 数据类型有一个奇怪的问题。

我有一个非常基本的表

create table datetest (
    value   smalldatetime   not null
)
Run Code Online (Sandbox Code Playgroud)

当我运行以下命令时

insert into datetest
values ('2016-12-29 21:30:00');
Run Code Online (Sandbox Code Playgroud)

我看到的值为2016-12-29 21:30:00

然后当我运行以下

update datetest
set value = '2016-12-29 21:31:30'
Run Code Online (Sandbox Code Playgroud)

我看到的值是2016-12-29 21:31:00

它不包括秒。为什么是这样?

Aks*_*hat 5

发生这种情况是因为精度smalldatetime为 1 分钟。它通过四舍五入丢弃日期时间值中的任何秒数。例如: '2014-10-10 12:13:29'四舍五入到'2014-10-10 12:13:00''2014-10-10 12:13:30'四舍五入到'2014-10-10 12:14:00'