我有将数据插入表的存储过程。表中的一列是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上的日期时间列中没有存储/显示毫秒?
答案 0 :(得分:0)
你必须在某个地方做某些事情才能将其改为smalldatetime或者其他什么因为它工作正常。我刚刚创建了一个新表,插入了你展示的数据,查询了表,我有毫秒。
我无法找到任何可以在服务器级别设置精度的内容,因此它必须在您的代码中。
答案 1 :(得分:0)
您使用的是哪种日期时间类型?要将日期精确存储到毫秒,如果您使用的是SQL Server 2008或更高版本,则需要使用DATETIME2
。
'DATETIME'的精度约为1/300秒。
'SMALLDATETIME'的准确度为1分钟。
答案 2 :(得分:0)
如Steve所述,问题与服务器无关。此表上有一个触发器,该触发器在插入时会进行毫秒舍入。