Re: [问题] RODBC做sqlQuery时,时间条件的设定

楼主: celestialgod (天)   2017-04-14 22:07:39
※ 引述《giock18 (小武)》之铭言:
: [问题类型]:
: 程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
:
: [软件熟悉度]:
: 入门(写过其他程式,只是对语法不熟悉)
: [问题叙述]:
: 我想使用R的RODBC跟ORACLE数据库相联,并且捞回上个月月份的资料。
: 在我的资料表表单中,有一栏ACTDATE记录时间,R读取时是POSIXct格式
: 假设我想抓上个月份的资料,我该怎么做?
: [程式范例]:
: 程式不长我直接贴
: Sys.setenv(TZ = "UTC") #设定时间
: dataframe <- sqlQuery(conn, "SELECT ACTDATE,SECTOR,STD,STA
: FROM TABLE
: where months(ACTDATE) = months(Sys.Date())-1
: Order by ACTDATE ")
同时比较年跟月的话可以用 trunc 代替
如果用ROracle可以这样写:
library(ROracle)
Sys.setenv(TZ = "Asia/Taipei", ORA_SDTZ = "Asia/Taipei")
df <- dbGetQuery(conn, "SELECT ACTDATE,SECTOR,STD,STA FROM TABLE
where trunc(ACTDATE, 'MM') = trunc(:SYS_DATE, 'MM')-1
order by ACTDATE", data.frmae(SYS_DATE = Sys.Date()))
但是其实Oracle SQL改成下面这样就可以跑了:
SELECT ACTDATE,SECTOR,STD,STA FROM TABLE
where trunc(ACTDATE, 'MM') = trunc(SYSDATE, 'MM') - 1
order by ACTDATE
ROracle其他好处像是:
1. 不需要像是ODBC要去config系统参数,直接使用TNSNAME就可以连线
2. 更多方便的API可以使用
3. 效能比RODBC好
其他参考这篇:
https://blogs.oracle.com/R/entry/r_to_oracle_database_connectivity
我写过一篇相关的blogger,可以参考一下:https://goo.gl/2avjU2
但是是在linux上编译
作者: locka (locka)   2017-04-14 22:26:00
推~是说印象中RODBC只能在32位元的R上跑的样子,现在还是吗?

Links booklink

Contact Us: admin [ a t ] ucptt.com