使用RJDBC连接Informix数据库时日期字段全部返回NA的求助
RJDBC连接Informix日期字段返回NA的解决办法
下面是几个经过验证的解决思路,你可以逐一尝试:
显式转换日期字段:在SQL查询中将Date类型字段转为字符串,拿到R后再转成Date类型。比如你的查询可以改成:
# 替换date_col为实际的日期字段名,多个字段就逐个转换 query <- "SELECT CAST(date_col AS CHAR(10)), col1, col2 FROM dimDates" df <- dbGetQuery(db_object, query) # 根据数据库的日期格式调整format参数,比如DMY对应"%d/%m/%Y",YMD对应"%Y-%m-%d" df$date_col <- as.Date(df$date_col, format = "%d/%m/%Y")调整JDBC连接参数:除了
DBDATE,尝试添加IFX_DATE_FORMAT参数指定日期格式,或者开启标准名称映射:drv <- JDBC("com.informix.jdbc.IfxDriver", "/path/to/your/informix-jdbc.jar") conn <- dbConnect(drv, "jdbc:informix-sqli://your-host:your-port/your-db:INFORMIXSERVER=your-server;DBDATE=DMY4;IFX_DATE_FORMAT='%d/%m/%Y';IFX_USE_STANDARD_NAMES=1")更新JDBC驱动:老版本的Informix JDBC驱动存在日期类型映射的兼容性问题,替换为最新的官方驱动包后重试。
手动处理结果集:如果自动映射失效,用
dbSendQuery+dbFetch手动处理字段:res <- dbSendQuery(db_object, "SELECT * FROM dimDates") df <- dbFetch(res) dbClearResult(res) # 若返回的是数值(日期偏移量),用origin参数转换 df$date_col <- as.Date(df$date_col, origin = "1970-01-01")
内容的提问来源于stack exchange,提问作者mkranj
相关产品推荐
相关产品推荐

