Невозможно преобразовать строку Oracle в дату с помощью dbplyr в R - PullRequest
0 голосов
/ 13 июня 2019

После подключения к базе данных оракула я хочу суммировать данные за день.Я извлекаю данные с помощью функции tbl ().Соединение проходит через RJDBC.Столбец даты хранится как символ.

Строка даты выглядит примерно так (содержит также время): "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»).Столбец также остается в формате символов (а не даты, как ожидалось).

Здесь создан 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 Ответ

1 голос
/ 13 июня 2019

для преобразования строки в дату вы должны указать формат

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

дБ <> скрипка здесь

...