說明:我有一個使用OLEDB我的SAS服務器上創建一個新表的一些C#代碼:插入datetime值到SAS表
"CREATE TABLE SASUSER." + tableName + " (time DATETIME, value NUM)";
然後,它使用一個for循環從.NET中添加一些值DataSet
。 time
是一個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服務器上使用模板表。我只是製作該表的一個副本並將我的數據複製到模板副本中。這並不理想,但它可以作爲一個快速解決方案。