连接到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结果集
答案 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