GETUTCDATE的毫秒数未存储在datetime字段中

时间:2013-10-16 18:09:58

标签: sql sql-server datetime

我有将数据插入表的存储过程。表中的一列是datetime,用于存储行插入的时间戳:

INSERT INTO myTable (Field1, Field2, Field3) VALUES (1, 2, GETUTCDATE());

Field3是日期时间列。当我使用简单的SELECT * FROM myTable查询从该表中选择数据时,所有日期时间值都显示为.000值,为毫秒。

如果我执行SELECT GETUTCDATE(),则会显示毫秒:2013-10-16 18:02:55.793

为什么在SELECT上的日期时间列中没有存储/显示毫秒?

3 个答案:

答案 0 :(得分:0)

你必须在某个地方做某些事情才能将其改为smalldatetime或者其他什么因为它工作正常。我刚刚创建了一个新表,插入了你展示的数据,查询了表,我有毫秒。

我无法找到任何可以在服务器级别设置精度的内容,因此它必须在您的代码中。

答案 1 :(得分:0)

您使用的是哪种日期时间类型?要将日期精确存储到毫秒,如果您使用的是SQL Server 2008或更高版本,则需要使用DATETIME2

'DATETIME'的精度约为1/300秒。

'SMALLDATETIME'的准确度为1分钟。

来源:http://msdn.microsoft.com/en-us/library/ff848733.aspx

答案 2 :(得分:0)

Steve所述,问题与服务器无关。此表上有一个触发器,该触发器在插入时会进行毫秒舍入。