首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ROracle - dbWriteTable,日期列

ROracle - dbWriteTable,日期列
EN

Stack Overflow用户
提问于 2015-03-07 12:27:11
回答 1查看 1.6K关注 0票数 5

如何使用dbWriteTable将带有日期列的数据框架写入Oracle数据库?我正在努力:

代码语言:javascript
复制
df <-read.table(header = TRUE, sep = ',', stringsAsFactors = FALSE,
text="
id,product,origination_date,repayment_date
1,A,2012-01-01,2012-02-01
2,A,2012-01-01,2012-04-01
3,A,2012-01-01,NA
4,A,2012-02-01,2012-03-01
")

df$origination_date <- as.Date(df$origination_date, format = '%Y-%d-%m')
df$repayment_date <- as.Date(df$repayment_date, format = '%Y-%d-%m')
names(df) <- toupper(names(df))

dbWriteTable(oraCon, 'TMP', df)

这是数据库中的结果:

代码语言:javascript
复制
1   A   31-DEC-11 11.00.00.000000 PM    01-JAN-12 11.00.00.000000 PM
2   A   31-DEC-11 11.00.00.000000 PM    03-JAN-12 11.00.00.000000 PM
3   A   31-DEC-11 11.00.00.000000 PM    
4   A   01-JAN-12 11.00.00.000000 PM    02-JAN-12 11.00.00.000000 PM

我也许可以理解,我最终得到的是时间戳,而不是日期,但我无法理解为什么会有31-DEC-11,而我想要01-JAN-12

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-28 09:22:55

此问题是由于操作系统和Oracle会话的时区设置造成的。您可以按以下方式更改这些设置:

代码语言:javascript
复制
Sys.setenv(TZ='CET')
Sys.setenv(ORA_SDTZ='CET')

显然,您可能需要选择不同的时区。我在所有R脚本的开头都包含了这些设置,但是可能有一种方法可以使这些设置成为您的新默认设置。

有关Oracle参数的详细信息,请参阅这里

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28914875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档