2017-10-23 42 views
1

私は、SASを使用してOracleデータベースに接続し、日付に問題が発生しています。パススルークエリを使用する場合、SASタイムスタンプではなくSAS日付として日付を保存する「DATEPART()」に代わるPL/SQLの代替方法がありますか?私はLIBNAMEまたはSASのSQLコンバータを使用することを避けたいと思います。余分なSASデータステップなしでこれを実行したいと思います。Oracle SASのパススルーSQL日付

私はDBSASTYPE =を試しましたが、パススルーSQLには当てはまりません。

例 - このクエリの「SYS_DATE」は、SAS DateではなくSAS Timestampとして保存されます。

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

select *部分は変更できますか? ORACLEへの接続からdatepart(sys_date)を選択してください..... – Reeza

+0

'(SYSDATE as date)as SYS_DATE'は動作しますか? (これはSQLサーバーで動作しますが、Oracleにはテストしません)。 – david25272

+0

日付としてのキャストは機能しません。時刻はOracleの日付として返されます。 SASがそれをタイムスタンプとして読む – Netbrian

答えて

1

Reezaはコメントで言及しているので、おそらく非パススルーセクションで行うのが最も簡単です。

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を求めてそれを上に持って、それをバックに再変換オフおそらく最高だと行うことができない場合。

+0

このソリューションをありがとう。私が望むものを正確に行うことができないように見えますが、これは最も近いものです。 – Netbrian