【问题标题】:dbGetQuery returns date that differs by an hourdbGetQuery 返回相差一小时的日期
【发布时间】:2017-05-30 14:56:25
【问题描述】:

在 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_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 的 DateType 是 DATE。我的电脑和服务器的时区都是英国的。

我的问题有两个:
1. 首先为什么会发生这种情况。
2. 我实际上需要日期为字符格式。是否有一些简单的方法可以让我们请求 DateType Date 在 R 中以 character 的形式接收,而不是 ("POSIXct" "POSIXt")

谢谢!

【问题讨论】:

    标签: sql r r-dbi roracle


    【解决方案1】:

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

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

    我在所有 R 脚本的开头都包含这些设置,但可能还有一种方法可以将这些设置设为新的默认设置。

    这里有更多关于Oracle时区参数的信息:Setting the Session Time Zone

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-20
      • 2015-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多