[R] Treatment of Date ODBC objects in R (RODBC)

Peter Dalgaard p.dalgaard at biostat.ku.dk
Mon Dec 22 19:29:33 CET 2008

Ivan Alves wrote:
> Dear all,
> Retrieving an Oracle "Date" data type by means of RODBC (version 1.2-4) 
> I get different classes in R depending on which operating system I am in:
> On MacOSX I get "Date" class
> On Windows I get " "POSIXt" "POSIXct" class
> The problem is material, as converting the "POSIXt" "POSIXct" object 
> with as.Date() returns one day less ("2008-12-17 00:00:00 CET" is 
> returned as "2008-12-16").

This is in a sense correct since CET is one hour ahead of GMT (two hours 
in Summer). What is a bit puzzling is that

 > ISOdate(2008,12,24)
[1] "2008-12-24 12:00:00 GMT"
 > class(ISOdate(2008,12,24))
[1] "POSIXt"  "POSIXct"
 > as.POSIXct("2008-12-24")
[1] "2008-12-24 CET"
 > as.POSIXct("2008-12-24")+1
[1] "2008-12-24 00:00:01 CET"

I.e. we have two ways of converting a timeless date to POSIXct, and they 
differ in noon/midnight, and in whether local timezone matters or not.

I believe Brian did this, and he usually does things for a reason....

> I have 2 related questions:
> 1. Is there a way to control the conversion used by RODBC for types 
> "Date"? or is this controlled by the ODBC Driver (in my case the Oracle 
> driver in Windows and Actual on Mac OS X)?
> 2. What is the trick to get as.Date() to return the _intended_ date (the 
> date that the OS X environment "correctly" reads)?

Add 12 hours, maybe? (43200 seconds)

Or play around with the timezone, but that seems painful.

    O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
   c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
  (*) \(*) -- University of Copenhagen   Denmark      Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)              FAX: (+45) 35327907

More information about the R-help mailing list