如何在SQL Server DateTime中存储Oracle时间戳精度6



我有一个场景,我必须将数据从Oracle表移动到SQL Server表。Oracle中的列是Timestamp(6), 6是精度。现在我不能以字符串格式发送Oracle数据。我拉数据直接从Oracle表,所以不能格式化它在Oracle方面。我能做的就是用VB6格式化数据。格式,使其适合SQL Server DateTime。我这样做是为了Oracle日期到SQL Server日期时间。

是否可以为timestamp和Datetime做类似的操作

这取决于您正在使用的SQL服务器的版本。正如@onedaywhen在他的评论中指出的那样,你可以使用DATETIME,但是你会失去一些精度,因为DATETIME只精确到大约3个十进制数字(3.33毫秒的精度);但是,如果您使用的是较早版本的SQL Server,那么就只能使用这个了。

如果你运行的是SQL Server 2008,你可以使用DATETIME2,它精确到100纳秒或7位数,这将处理你想做的事情。

如果你真的想,你可以hack一些东西来表示日期/时间使用十进制列。可以将列设置为DECIMAL(20,6),并将其格式化为

YYYYMMDDHHIISS.ffffff

,

YYYY=year
MM=month (01-12)
DD=day
HH=hour (24 hour clock)
II=minutes
SS=seconds
ffffff=fractional seconds

的实现留给读者作为练习。

(警告:如果你选择使用这样的东西,请注意,在《死灵记》的原始版本中,这种相同的日期/时间格式被用作计时的基础,并且有传言直接导致作者阿卜杜勒·阿尔哈兹德被称为"疯狂的阿拉伯人"。: -)

Cthulhu fthagn。

最新更新