Вы попали в разрыв, с которым я тоже боролся.Я не могу судить о том, что «правильно» или «лучше», но только о том, что я делал в прошлом.
Я обычно делаю то, что вы делали в первом примере, и просто имею дело с изменениями типов, когда они попадают в R. Если вы хотите использовать последний метод, вы можете преобразовать дату, как только она была в R. Мой OracleПохоже, что системы всегда настроены так, чтобы возвращать даты в формате «22-НОВ-10», что раздражает как анализ.Поэтому я использовал бы функцию Oracle to_char () в своем запросе, чтобы отформатировать даты во что-то, что R может легко распознать.
Так, например, у меня может быть это в моем операторе SELECT:
to_char(myDate, 'yyyy-mm-dd') as myDate
, затем я помещаю это в фрейм данных с именем myData и делаю это:
myData$properDate <- strptime(myData$myDate, "%Y-%m-%d")
Вопрос о том, иметь ли дело с фиксацией дат или с фиксацией других полей, зависит от того, сколько полей даты у вас есть и сколько полей без даты испортил первый метод.Но по своему опыту я либо исправляю одно, либо другое.
Что-то, что вы могли бы учесть при использовании метода 1: попробуйте использовать cast () в вашем SQL, чтобы принудительно задать поле определенного типа.Единственные случаи, когда у меня возникали проблемы с использованием RODBC для моих типов данных, это когда тип неоднозначен на стороне сервера.Обычно это результат операторов CASE или что-то подобное в конце SQL.