繁体   English   中英

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

[英]dbGetQuery returns date that differs by an hour

在RI中,运行以下查询以检索数据:

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_FK_RW_BOND_HOLDING_VAL_BOND  PK_CASHFLOW_DAT
RU000A0JV7J9                    2018-01-14 23:00:00
RU000A0JV7J9                    2017-01-14 23:00:00
RU000A0JV7J9                    2019-08-01 00:00:00
RU000A0JV7J9                    2019-01-31 23:00:00
RU000A0JV7J9                    2018-08-01 00:00:00
RU000A0JV7J9                    2018-01-31 23:00:00
AT0000385745                    2017-08-01 00:00:00
AT0000385745                    2017-01-31 23:00:00

其中PK_CASHFLOW_DAT是类别("POSIXct" "POSIXt")的类别。 另一方面,如果我在SQL(Toad for 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_CASHFLOW_DAT的PK_CASHFLOW_DATDATE 我的计算机和服务器的时区均为英国。

我的问题是双重的:
1.为什么首先发生这种情况。
2.实际上,我需要日期以字符格式显示。 有什么简单的方法可以让我们请求DateType Date作为R中的character而不是("POSIXct" "POSIXt")

谢谢!

此问题是由于操作系统和oracle会话的默认时区设置引起的。 您可以覆盖这些设置。 就我而言,以下规范可以解决问题。

Sys.setenv(TZ='CET')        # Operating system
Sys.setenv(ORA_SDTZ='CET')  # Oracle Session

我在所有R脚本的开头都包含了这些设置,但是也许还有一种方法可以使这些设置成为新的默认设置。

这是有关Oracle时区参数的更多信息: 设置会话时区

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM