【问题标题】:Oracle Dates to SAS in Passthrough SQL直通 SQL 中的 Oracle 日期到 SAS
【发布时间】:2017-10-23 21:36:12
【问题描述】:

我正在使用 SAS 连接到 Oracle 数据库,但遇到了日期问题。使用传递查询时,是否有 PL/SQL 替代“DATEPART()”将日期保存为 SAS 日期,而不是 SAS 时间戳?我宁愿避免使用 LIBNAME 或 SAS 的 SQL 转换器,并且希望在没有额外的 SAS 数据步骤的情况下做到这一点。

我已经尝试过 DBSASTYPE= ,但它似乎不适用于直通 SQL。

示例 -- 此查询中的“SYS_DATE”存储为 SAS 时间戳而不是 SAS 日期。

Proc SQL; 
Create Table WORK.DATE_ORACLE as 
Select * From Connection to ORACLE 
(
SELECT trunc(SYSDATE) as SYS_DATE FROM DUAL
); 
quit ;

【问题讨论】:

  • 你可以修改 select * 部分,不是吗?从连接到 ORacle 中选择 datepart(sys_date).....
  • cast(SYSDATE as date) as SYS_DATE 会起作用吗? (它适用于 SQL 服务器,我没有要测试的 Oracle)。
  • 转换为日期不起作用 - 它作为 Oracle 日期返回,其中包括时间部分。 SAS 将其读取为时间戳

标签: oracle sas


【解决方案1】:

正如 Reeza 在 cmets 中提到的,这可能在非直通部分中最容易完成。

Proc SQL; 
Create Table WORK.DATE_ORACLE as 
Select datepart(sysdate) as sysdate From Connection to ORACLE 
(
SELECT trunc(SYSDATE) as SYS_DATE FROM DUAL
); 
quit ;

如果您不能这样做,那么您最好让 Oracle 将日期转换为文本字符串,将其转过来,然后重新转换回来。

【讨论】:

  • 感谢您提供此解决方案。看起来我不能完全按照我的意愿去做,这是最接近的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-15
  • 2015-06-27
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多