2011-04-20 106 views
1

我有一個場景,我必須將數據從Oracle表移動到SQL Server表。 Oracle中的列是Timestamp(6)6是精度。現在我無法以字符串格式發送Oracle Data。我直接從Oracle表中獲取數據,因此無法在Oracle端進行格式化。我能做的是使用VB6.Format格式化數據,以使其適合於SQL Server DateTime。我正在爲Oracle日期到SQL Server日期時間這樣做。如何在SQL Server中存儲Oracle時間戳精度6日期時間

對於時間戳和日期時間可以做類似的事情。

+0

如果您使用'DATETIME'(精確到三分之一秒),它們不會損失精度嗎?同上VB6的Date類型和臨時功能只能精確到1秒(包括它的Format()函數)? – onedaywhen 2011-04-20 10:34:25

+1

如果你在SQL Server 2008上,你可以使用'datetime2(6)'。 – 2011-04-20 11:48:43

+0

@MikaelEriksson應該是答案!好一個 – 2014-03-28 16:24:10

回答

4

這取決於您使用的SQL服務器的版本。正如@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 

實施就留給讀者做練習。 (CAVEAT:你應該選擇使用類似的東西,注意這個相同的日期/時間格式被用作原始版本的死靈書中計時的基礎,而且據傳直接導致作者,Abdul Alhazred,被稱爲「瘋狂的阿拉伯人」。:-)

Cthulhu fthagn。

相關問題