我有将数据插入表中的存储过程。表中的一列为datetime,用于存储行插入的时间戳:
INSERT INTO myTable (Field1, Field2, Field3) VALUES (1, 2, GETUTCDATE());
Field3
是datetime列。当我使用简单的SELECT * FROM myTable
查询从该表中选择数据时,所有日期时间值都以.000
值显示,时间为毫秒。
如果我执行SELECT GETUTCDATE()
,则显示毫秒:2013-10-16 18:02:55.793
为什么在SELECT上的date time列中没有存储/显示毫秒?
发布于 2013-10-16 10:22:51
你必须在某个地方做一些事情来把这个变成小时间,或者什么的,因为它很好。我刚刚创建了一个新的表,像您显示的那样插入了数据,查询了这个表,我有毫秒的时间。
我一直找不到任何您可以在服务器级别设置精度的地方,所以它必须在您的代码中。
发布于 2013-10-16 12:01:45
您使用的是哪种日期时间类型?要将数据的存储精度提高到毫秒,如果使用Server 2008或更高版本,则需要使用DATETIME2
。
“‘DATETIME”给出了大约1/300秒的精度。
“‘SMALLDATETIME”的准确度为1分钟。
发布于 2013-10-16 21:12:20
正如Steve所建议的,问题与服务器无关。此表上有一个触发器,该触发器在insert上执行毫秒舍入。
https://stackoverflow.com/questions/19410674
复制