Sql 从GETUTCDATE算起的毫秒未存储在datetime字段中
我有一个将数据插入表的存储过程。表中的一列是datetime,用于存储行插入的时间戳:Sql 从GETUTCDATE算起的毫秒未存储在datetime字段中,sql,sql-server,datetime,Sql,Sql Server,Datetime,我有一个将数据插入表的存储过程。表中的一列是datetime,用于存储行插入的时间戳: INSERT INTO myTable (Field1, Field2, Field3) VALUES (1, 2, GETUTCDATE()); Field3是日期时间列。当我使用simpleselect*fromMyTablequery从该表中选择数据时,所有日期时间值都以.000值显示,以毫秒为单位 如果我执行选择GETUTCDATE(),将显示毫秒数:2013-10-16 18:02:55.793
INSERT INTO myTable (Field1, Field2, Field3) VALUES (1, 2, GETUTCDATE());
Field3
是日期时间列。当我使用simpleselect*fromMyTable
query从该表中选择数据时,所有日期时间值都以.000
值显示,以毫秒为单位
如果我执行选择GETUTCDATE()
,将显示毫秒数:2013-10-16 18:02:55.793
为什么SELECT上的日期时间列中不存储/显示毫秒?您必须在某个地方执行某些操作才能将其更改为smalldatetime或其他操作,因为它工作正常。我刚刚创建了一个新表,插入了如您所示的数据,查询了该表,我得到了毫秒数
我找不到任何可以在服务器级别设置精度的地方,因此必须在代码中设置精度。您使用的是哪种日期时间类型?如果您使用的是SQL Server 2008或更高版本,则需要使用
DATETIME2
来存储精度高达毫秒的日期
“DATETIME”的精度约为1/300秒
“SMALLDATETIME”的精确度为1分钟
来源:根据建议,问题与服务器无关。此表上有一个触发器,该触发器在插入时进行毫秒舍入。是否通过应用程序检索此列?否,所有查询都在SSMS中执行。存储这些值的列的数据类型是什么???很可能是smalldatetime???列就是datetime,这是肯定的。
从表中选择CONVERT(VARCHAR(23),DatetimeColumn,126)是什么代码>显示?我理解你的观点,但由于某些原因,这在我的服务器上不起作用。值直接从GETUTCTIME()传递到表中,因此没有空间将类型更改为smalldatetime。因此您可以获得秒,但不是毫秒?是的,秒很好,但每条记录的毫秒为.000,因此运行此命令,并发布结果:创建表TestTime(Test datetime)转到插入TestTime(Test)值(getutcdate())从TestTime中选择Test GO Drop表TestTime GOAny luck?结果如何?