2011-08-03 74 views
0

說明:我有一個使用OLEDB我的SAS服務器上創建一個新表的一些C#代碼:插入datetime值到SAS表

"CREATE TABLE SASUSER." + tableName + " (time DATETIME, value NUM)"; 

然後,它使用一個for循環從.NET中添加一些值DataSettime是一個DateTime對象,value只是一個Double。 :

"INSERT INTO SASUSER." + tableName + " (time, value) VALUES (" + time.Ticks + " , " + value + ")" 

它採取了一些隨機猜測找出時間列只接受數字 - 不是一個典型的日期字符串(例如'06 /十一分之二十六十三點24分11' 秒)。

問題:儘管我將時間列指定爲DATETIME,但只顯示日期(mm/dd/yyyy) - 而不是時間。 e.x.如果我用10或10.5替換'time.Ticks',那麼1/11/1960被保存到時間值。它將該數字解釋爲自1960年1月1日以來的天數,它應該將其解釋爲從1960年1月1日午夜開始的秒數。

說明:我正在使用OLEDB與SAS的SAS.IOMProvider提供程序。當我添加時間值時,我知道必須將刻度轉換爲SAS刻度(1960年1月1日午夜以來的秒數) - 我只是拿出額外的計算來使讀起來更容易。

解決方法:我在具有正確格式化列的SAS服務器上使用模板表。我只是製作該表的一個副本並將我的數據複製到模板副本中。這並不理想,但它可以作爲一個快速解決方案。

回答

0

我不知道C#作爲我只熟悉VB。

在VB: INSERT INTO表值( ' 「& FORMAT(yourdatetime, 」YYYY-MM-DD HH:MM:SS「)&」')

嘗試指here並修改它到C# 。

我簡單地猜測:INSERT INTO表值( ' 「&的String.Format( 」{0:YYYY-MM-DD HH:MM:SS}「,yourdatetime)&」')