【问题标题】:Snowflake date shifted by 1 day when importing the data into R将数据导入 R 时,雪花日期偏移 1 天
【发布时间】:2021-11-10 05:32:45
【问题描述】:

我们在 SNOWFLAKE 中有一个数据库。当我执行这个查询时

SELECT REQUEST_ID, DUE_DATE FROM table WHERE REQUEST_ID = 'abc'

我得到了这个结果。

我在 R 中执行相同的查询

query <- "SELECT REQUEST_ID, DUE_DATE FROM table WHERE REQUEST_ID = 'abc'"
data1 <- DBI::dbGetQuery(con, query)

我得到了这个结果。

您可能已经注意到日期偏移了 1 天。雪花中的数据类型是 DATE 类型,而在 R 中是字符类型。我不确定是什么导致了这个问题。我最初认为这可能是因为时区,所以我尝试通过运行以下几行来更改 SNOWFLAKE 中的时区

ALTER USER SET TIMEZONE = 'UTC'
ALTER SESSION SET TIMEZONE = 'UTC'

但它并没有改变任何东西。后来我读到 DATES 中没有时间组件,因此不受时区的影响。我不知道去哪里寻找以及改变什么来解决这个问题。如果您能给我任何指示,我将不胜感激。

这就是我创建连接 (con) 对象的方式 -

con <- DBI::dbConnect(RJDBC::JDBC("net.snowflake.client.jdbc.SnowflakeDriver", driver), url)

【问题讨论】:

  • 连接是如何完成的?使用最新 RStudio 安装随附的 ODBC 驱动程序或 OOTB Snowflake 驱动程序?能否贴出连接界面截图以查看详情?
  • @SrinathMenon 这是一个用于连接的内部包,但我认为这是其中的主线。 con &lt;- DBI::dbConnect(RJDBC::JDBC("net.snowflake.client.jdbc.SnowflakeDriver", driver), url) 其中driver 是路径,url 是数据库服务器 url。
  • 那里使用什么版本的 JDBC?在 DATE 对象的过去版本中存在一些问题。能否也检查一下JDBC_USE_SESSION_TIMEZONE是否已更改?
  • 对不起@Sergiu,我不知道如何检查这两个。你能帮我检查一下命令/步骤吗?感谢您的帮助。
  • 对于参数,您可以在 Snowflake UI 上执行此操作:show parameters like 'JDBC_USE_SESSION_TIMEZONE';,对于 JDBC 版本,我假设您有 jar 文件存储在某处(我不熟悉 R)。 jar 文件名也包含版本(类似于 snowflake-jdbc-3.13.9.jar

标签: sql r snowflake-cloud-data-platform


【解决方案1】:

事实证明,先前版本的驱动程序存在错误,将驱动程序更新到最新版本即可解决此问题。

这是https://github.com/snowflakedb/snowflake-jdbc/pull/434这里的一个相关问题,您可以从这里https://repo1.maven.org/maven2/net/snowflake/snowflake-jdbc/安装最新版本的驱动程序

请注意,版本号在该页面上未按数字排序。

【讨论】:

    猜你喜欢
    • 2017-03-18
    • 2023-04-02
    • 2019-03-27
    • 2022-07-20
    • 1970-01-01
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    相关资源
    最近更新 更多