如何在 SQL Server DateTime 中存储 Oracle TimeStamp 精度 6

giz*_*gok 2 sql vb.net sql-server vb6 oracle

我有一个场景,我必须将数据从 Oracle 表移动到 SQL Server 表。Oracle 中的列是 Timestamp(6) 6 是精度。现在我无法以字符串格式发送 Oracle 数据。我直接从 Oracle 表中提取数据,因此无法在 Oracle 端对其进行格式化。我能做的是使用 VB6.Format 格式化数据,使其适合 SQL Server DateTime。我正在为 Oracle Date 到 SQL Server Datetime 执行此操作。

可以对时间戳和日期时间执行类似的操作吗?

Bob*_*ica 5

这取决于您使用的 SQL Server 版本。正如 @onedaywhen 在他的评论中指出的那样,您可以使用 DATETIME,但您会失去一些精度,因为 DATETIME 只能精确到大约 3 位小数(精确度为 3.33 毫秒);但是,如果您使用的是早期版本的 SQL Server,那么您就可以得到这样的结果。

如果您运行的是 SQL Server 2008,则可以使用 DATETIME2,它精确到 100 纳秒或 7 位数字,这可以处理您想要执行的操作。

如果您确实愿意,您可以使用 DECIMAL 列来修改一些内容来表示日期/时间。您可以将列设置为 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
Run Code Online (Sandbox Code Playgroud)

实施留给读者作为练习。

(警告:如果您选择使用类似的格式,请注意,同样的日期/时间格式在《死灵之书》的原始版本中被用作计时的基础,并且有传言直接导致了作者 Abdul Alhazred,被称为“疯狂的阿拉伯人”。:-)

克苏鲁 fthagn。