Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql dbGetQuery返回相差一小时的日期_Sql_R_R Dbi_Roracle - Fatal编程技术网

Sql dbGetQuery返回相差一小时的日期

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

在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_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