【发布时间】:2018-01-22 05:57:00
【问题描述】:
我还是 SAS 和 DB2 的新手。我有一个 DB2 表,其中有一列存储编码为时间戳的值。我正在尝试从我的工作目录中的 SAS 数据集中将数据加载到此列。但是,其中一些时间戳对应于 01-01-1582 之前的日期,并且不能在 SAS 中存储为日期时间值。它们被存储为字符串。
这意味着如果我想将这些值加载到 DB2 表中,我必须首先使用 TIMESTAMP() DB2 函数将它们转换为时间戳,据我所知,该函数需要使用执行语句传递 SQL(相反到 SAS ACCESS libname 方法)。例如,为了写入单个值,我执行以下操作:
PROC SQL;
connect to db2 (user = xxxx database = xxxx password = xxxx);
execute (insert into xxxx.xxxx (var) values (TIMESTAMP('0001-01-01-00.00.00.000000'))) by db2;
disconnect from db2;
quit;
如何为源数据集中的所有值实现这一点?执行命令中的 select ... from 语句不起作用,因为据我所知,我无法从 DB2 连接中引用 SAS Work 目录。
最终我可以编写一个宏来执行上面的 PROC SQL 块,并在每次观察的数据步骤中调用它,但我想知道是否有更简单的方法来做到这一点。更改变量的类型不是一种选择。
提前致谢。
【问题讨论】:
标签: sas timestamp db2 proc-sql pass-through