无法在R中使用dbplyr将Oracle String转换为Date

时间:2019-06-13 11:40:30

标签: r database oracle time dbplyr

连接到oracle数据库后,我想每天总结一下数据。我正在使用tbl()函数提取数据。该连接通过RJDBC运行。日期列存储为char。

日期字符串如下所示(还包含时间):     “ 2015-01-31 10:56:52.0”

我正在尝试将字符串转换为日期格式:

melds <- bibu %>%
  select(DATE) %>%
  mutate(Datday = as.Date(to_date(substr(DATE, 1, 10))))

运行此代码,我希望将字符串(chr)转换为Date。发生的情况是,该字符串已正确切割为日期,但时间保持为0(“ 2015-01-31 00:00:00.0”)。该列也保持为char格式(而不是预期的日期)。

在这里创建的sql查询:

melds %>% show_query()
<SQL>
SELECT "DATE", CAST(to_date(SUBSTR("DATE", 1, 10)) AS DATE) AS "Datday"
FROM (TXYZ)

以下问题后更新:

melds <- bibu %>%
  select(DATE) %>%
  mutate(Datday = as.Date(to_date(substr(DATE, 1, 10), "yyyy-MM-dd")), "%Y-%m-%d")

melds %>% show_query()
<SQL>
SELECT "DATE", CAST(to_date(SUBSTR("DATE", 1, 10), 'yyyy-MM-dd') AS DATE) AS "Datday", '%Y-%m-%d' AS """%Y-%m-%d"""
FROM (TXYZ) 

错误:无法检索JDBC结果集

1 个答案:

答案 0 :(得分:1)

要将字符串转换为日期,您应该指定一种格式

to_date(SUBSTR("DATE", 1, 10),'yyyy-mm-dd') 

或随着时间

to_date("DATE",'yyyy-mm-dd hh24:mi:ss') 

示例:

select  to_date(SUBSTR('2015-01-31 10:56:52.00', 1, 10),'yyyy-mm-dd') as dat
,to_date(substr('2015-01-31 10:56:52',1,19),'yyyy-mm-dd hh24:mi:ss') as datTime
,to_timestamp('2015-01-31 10:56:52.0','yyyy-mm-dd hh24:mi:ss.FF1')  as timestmp

from dual;

结果:

DAT       | DATTIME   | TIMESTMP                    
:-------- | :-------- | :---------------------------
31-JAN-15 | 31-JAN-15 | 31-JAN-15 10.56.52.000000000

db <>提琴here