Sql 一个足够精确的日期时间字段,用于区分批量/批量插入中的行
我正在使用SSI向各种表中插入500到300多万行。数据源是从平面CSV文件到另一个DB(Oracle、MySQL、SQL Server)的任何内容 我正在尝试创建一个“inserted_on”列,显示添加行的日期/时间戳,我需要它足够精确,以区分上一行和下一行。换句话说,每一行都应该有不同的日期时间值,即使它非常接近 我尝试了一个默认值为Sql 一个足够精确的日期时间字段,用于区分批量/批量插入中的行,sql,sql-server,datetime,ssis,sql-server-2014,Sql,Sql Server,Datetime,Ssis,Sql Server 2014,我正在使用SSI向各种表中插入500到300多万行。数据源是从平面CSV文件到另一个DB(Oracle、MySQL、SQL Server)的任何内容 我正在尝试创建一个“inserted_on”列,显示添加行的日期/时间戳,我需要它足够精确,以区分上一行和下一行。换句话说,每一行都应该有不同的日期时间值,即使它非常接近 我尝试了一个默认值为(gettime())的datetime2(7)字段,但这似乎不够精确。如前所述,您应该使用时间戳 请参阅或参阅其他详细信息 希望这能有所帮助。我认为,如果您
(gettime())
的datetime2(7)
字段,但这似乎不够精确。如前所述,您应该使用时间戳
请参阅或参阅其他详细信息
希望这能有所帮助。我认为,如果您想保证知道插入的顺序,应该使用某种不断增长的ID字段来表示行插入,而不是依赖时间。正如您所注意到的,datetime2的最大精度不一定是唯一的。对于亚毫秒精度,请使用SYSDATETIME()
而不是GETDATE()
。然而。您可能仍然需要一个增量值来断开连接。注意:在SQL Server中,CURRENT\u TIMESTAMP
属于数据类型DATETIME
,与TIMESTAMP
无关(这相当于ROWVERSION
,与实际时间戳无关)。ROWVERSION
上的文档还注意到,TIMESTAMP
将因其价值而被弃用。感谢@ZLK的更新。谢谢!这个不推荐使用的消息让我感到震惊,因为我在SSIS导入中广泛使用它。所以现在我想知道我应该使用一个不断增长的ID还是时间戳
/行版本
?这是一个基于案例的判断调用。我们使用的是时间戳
,每天提取的事务量达到数十万次,没有任何麻烦。顺序很重要。