Sql dbGetQuery返回相差一小时的日期
在R中,我正在运行以下查询以检索数据:Sql dbGetQuery返回相差一小时的日期,sql,r,r-dbi,roracle,Sql,R,R Dbi,Roracle,在R中,我正在运行以下查询以检索数据: test <- dbGetQuery(conn = GetConnection("default"), statement = "SELECT PK_FK_RW_BOND_HOLDING_VAL_BOND, PK_CASHFLOW_DAT FROM RW_CASH_FLOWS_ON_BONDS WHERE PK_FK_RW_BOND_HOLDING_VAL_BOND = 'AT0000385745' OR PK
test <- dbGetQuery(conn = GetConnection("default"), statement = "SELECT PK_FK_RW_BOND_HOLDING_VAL_BOND, PK_CASHFLOW_DAT FROM RW_CASH_FLOWS_ON_BONDS WHERE PK_FK_RW_BOND_HOLDING_VAL_BOND = 'AT0000385745'
OR PK_FK_RW_BOND_HOLDING_VAL_BOND = 'RU000A0JV7J9'")
其中,PK\u现金流数据
属于(“POSIXct”“POSIXt”)
。另一方面,如果我在SQL中运行完全相同的查询(Toad代表Oracle),它将返回
PK_FK_RW_BOND_HOLDING_VAL_BOND PK_CASHFLOW_DAT
RU000A0JV7J9 1-8-2019
RU000A0JV7J9 1-2-2019
RU000A0JV7J9 1-8-2018
RU000A0JV7J9 1-2-2018
RU000A0JV7J9 1-8-2017
RU000A0JV7J9 1-2-2017
AT0000385745 15-1-2018
AT0000385745 15-1-2017
现在,PK\u CASHFLOW\u DAT
的日期类型是DATE
。我的电脑和服务器的时区都是英国的
我的问题有两个:1.首先,为什么会发生这种情况。
2.我实际上需要一个字符格式的日期。有没有一种简单的方法可以让我们请求DateType
Date
作为R中的字符接收,而不是(“POSIXct”“POSIXt”)
谢谢 此问题是由于操作系统和oracle会话的默认时区设置造成的。
您可以覆盖这些设置。在我的例子中,下面的规范实现了这一点
Sys.setenv(TZ='CET') # Operating system
Sys.setenv(ORA_SDTZ='CET') # Oracle Session
我在所有R脚本的开头都包含了这些设置,但可能还有一种方法可以使这些设置成为新的默认设置
以下是有关Oracle时区参数的详细信息:
Sys.setenv(TZ='CET') # Operating system
Sys.setenv(ORA_SDTZ='CET') # Oracle Session