数据是这样的:
> m
coding code restriction pperiod nperiod
1 1 600557 0 2005-09-30 2005-12-31
2 2 759 0 2005-12-31 2006-03-31
3 3 600201 0 2006-03-31 2006-06-30
4 3 600325 0 2006-03-31 2006-06-30
5 3 600791 0 2006-03-31 2006-06-30
6 3 600976 0 2006-03-31 2006-06-30
7 4 501 0 2006-06-30 2006-09-30
8 4 2003 3739171 2006-06-30 2006-09-30
9 4 2010 9852000 2006-06-30 2006-09-30
10 4 2019 1998750 2006-06-30 2006-09-30
11 4 2021 6027840 2006-06-30 2006-09-30
12 4 600069 37160000 2006-06-30 2006-09-30
13 4 600079 16805880 2006-06-30 2006-09-30
14 4 600112 0 2006-06-30 2006-09-30
其中pperiod和nperiod都是POSIXct类型的日期表示。
> class(m$pperiod)
[1] "POSIXt" "POSIXct"
> class(m$nperiod)
[1] "POSIXt" "POSIXct"
当我想利用sqlSave建立临时表的时候,代码如下:
<br />
library(RODBC)<br />
channel <- odbcConnect("PostgreSQL30")<br />
sqlSave(channel, m, tablename = "tmp1", rownames = F)<br />
odbcClose(channel)<br />
结果返回以下错误:
错误于sqlSave(channel, m, tablename = "shares", rownames = F, colnames = F) :
[RODBC] Failed exec in Update
22P02 7 ERROR: invalid input syntax for type double precision: "2005-09-30";
Error while executing the query
看起来是把日期当成了双精度类型数据,但是,我一直没查到应该怎么处理?
即便是把两个日期变量改称Date类型,也会出这个问题。