日期显示为数字

时间:2013-01-24 08:36:18

标签: r postgresql date

我从postgresql中获取了一组日期,它们看起来是正确的:

[1] "2007-07-13" "2007-07-14" "2007-07-22" "2007-07-23" "2007-07-24"
[6] "2007-07-25" "2007-08-13" "2007-08-14" "2007-08-15" "2007-08-16"
etc.

然后我想对它们运行一个循环来创建新的sql语句以获取其他一些数据集(是的,我知道我在做什么,它不可能在数据库服务器中进行所有处理)< / p>

所以我试过

for(date in geilodates)
 mapdate(date,geilo)
Error in postgresqlExecStatement(conn, statement, ...) : 
  RS-DBI driver: (could not Retrieve the result : ERROR:  invalid input syntax for type date: "13707"
LINE 1: ...id_date_location where not cowid is null and date='13707' or...

mapdate是我写的一个函数,其中使用的日期是

sql=paste('select * from gps_coord where cowid=',cowid," and date='",date,"'",sep='')

所以,发生的事情是在我尝试将sql粘贴在一起之前,R默默地将我的格式化日期转换为它们的整数表示。

如何获取日期的原始文字表示?我试过了

for(date in geilodates){
  d=as.Date(date,origin="1970-01-01")
  mapdate(d,geilo)
}
Error in charToDate(x) : 
character string is not in a standard unambiguous format

我还没有设法找到任何其他函数来创建日期字符串(或者将“提供”日期作为我在列出变量时得到的字符串

2 个答案:

答案 0 :(得分:4)

尝试?format.Date

x <- Sys.Date()
class(x)
class(format(x))

在R中,类Date的数据是数字类型。 将Date表示为字符串的官方方法是调用format

我怀疑date的格式是否已在您的案例中定义,因此paste 做了意想不到的事。

也许你需要将format(x, "%Y-%m-%d")放在paste函数而不是date中,告诉R你想要Date的格式。

答案 1 :(得分:1)

感谢wush978让我指向了正确的方向,最后我不得不这样做:

for(d in geilodates){
 date=format(as.Date(d,origin="1970-01-01"))
 mapdate(date,geilo)
}

由于某种原因,在循环内部,“date”变量被视为一个整数,所以我明确地必须将其转换为日期然后格式化它...