2014-01-30 73 views
0

我有這個疑問轉換字符類Date

sql <- "select 
    observationid::text,id,date, ST_X(location::geometry) as lon, ST_Y(location::geometry) as lat 
    from test 
    where date>= '1850-01-01' and date <'1851-01-01'" 
datain<-dbGetQuery(dbh,sql) 

,我從R.運行,我想什麼做的是設置日期範圍的東西查詢外像

datamin <- '1850-01-01' 
datamax <- '1851-01-01' 
sql <- "select 
    observationid::text,id,date, ST_X(location::geometry) as lon, ST_Y(location::geometry) as lat 
    from test 
    where date>= datamin and date <datamax" 
datain<-dbGetQuery(dbh,sql) 

但我得到這個錯誤

Error in postgresqlExecStatement(conn, statement, ...) : 
    RS-DBI driver: (could not Retrieve the result : ERROR: column "datamin" does not exist 

非常感謝

+0

R不解釋裏面像其他一些編程語言的字符串變量。你需要用'paste'來構造你的查詢字符串:'sql < - paste(「select blah blah where date> =」,datamin,「and ...」)'。你應該閱讀一些[介紹R手冊](http://cran.r-project.org/doc/manuals/R-intro.pdf) – BrodieG

+0

對不起,但我沒有工作(因爲選擇?) – user3036416

+0

打印'sql' var並查看它是否包含您認爲應該的內容。 – BrodieG

回答

0
datamin <- '1850-01-01' 
datamax <- '1851-01-01' 

sql <- sprintf("select 
     observationid::text,id,date, ST_X(location::geometry) as lon, ST_Y(location::geometry) as lat 
     from test 
     where date>= '%s' and date < '%s';",datamin,datamax) 
datain<-dbGetQuery(dbh,sql) 
0

你需要編寫datamin和DATAMAX爲日期:

datamin <- as.Date('1850-01-01') 
datamax <- as.Date('1851-01-01')