通过C#.NET OLEDB SQL将日期时间值插入SAS表

时间:2011-08-03 00:13:28

标签: sql sas

描述:我有一些C#代码使用OLEDB在我的SAS服务器上创建一个新表:

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

然后它使用FOR循环从.NET DataSet添加一些值。 timeDateTime个对象,而value只是Double。 :

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

需要一些随机猜测才能发现时间列只接受数字 - 而不是典型的日期字符串(例如'06 / 26/11 13:24:11')。

问题:即使我将时间列指定为DATETIME,也只显示日期(mm / dd / yyyy) - 而不是时间。 e.x.如果我将'time.Ticks'替换为10或10.5,则将1/11/1960保存为时间值。它将这个数字解释为自1960年1月1日以来的天数,它应该将其解释为自1960年1月1日午夜以来的秒数。

注意:我正在将SASB与SAS的SAS.IOMProvider提供商一起使用。当我添加时间值时,我知道我必须将刻度转换为SAS刻度(自1960年1月1日午夜以来的秒数) - 我只是取出额外的计算以使其更容易阅读。

解决方法:我在SAS服务器上使用模板表,该表具有正确格式化的列。我只是制作该表的副本并将我的数据复制到模板副本中。这并不理想,但它可以作为快速解决方案。

1 个答案:

答案 0 :(得分:0)

我不确定C#,因为我只熟悉VB。

在VB中: 插入表值('“& FORMAT(yourdatetime,”yyyy-MM-dd HH:mm:ss“)&”')

尝试参考here并将其修改为C#。

我只是猜测:INSERT INTO TABLE VALUES('“& String.Format(”{0:yyyy-MM-dd HH:mm:ss}“,yourdatetime)&”')