R:sqldf中的日期函数提供异常的答案(错误的日期格式?) [英] R: Date function in sqldf giving unusual answer (wrong date format?)

查看:179
本文介绍了R:sqldf中的日期函数提供异常的答案(错误的日期格式?)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用sqldf添加一个日期,我知道这应该很简单,但是我无法弄清楚我的日期格式有什么问题。使用:

I am trying to add to a date using sqldf, i know it should be simple but I can't figure out what is wrong with my date format. Using:

sqldf("select date(model_date, '+1 day') from lapse_test")

给出'-4666-01-23'的答案

give's answers like '-4666-01-23'

model_date是日期格式,看起来像2015-01-01

The model_date's are in the date format and look like 2015-01-01

我以前用一个字符串('12 / 1/2015')使用

I previously made them from a character string ('12/1/2015') using

lapse_test$model_date <- as.Date(lapse_test$date1,format = "%m/%d/%Y") or
lapse_test$model_date <- as.POSIXCT(lapse_test$date1,format = "%m/%d/%Y")

我猜这是问题吗?任何想法?

I'm guessing this is the problem? Any ideas?

推荐答案

将字符变量传递给 date()函数似乎工作:

Passing a character variable to the date() function seems to work:

df <- data.frame(a=as.Date("2010-10-01"))
df$b <- as.character(df$a)

sqldf("select date(a) from df")
#       date(a)
# 1 -4672-08-24

sqldf("select date(b) from df")
#      date(b)
# 1 2010-10-01

sqldf("select date(b, '+1 day') from df")
#   date(b, '+1 day')
# 1        2010-10-02

请注意,您可以直接对R中的Date对象执行(某些)算术,而不需要SQL:

Note that you can do (some) arithmetic on Date objects in R directly, without needing SQL:

df$a <- df$a + 1
df
#            a          b
# 1 2010-10-02 2010-10-01

这篇关于R:sqldf中的日期函数提供异常的答案(错误的日期格式?)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆