使用带有RSQLite的日期

时间:2012-11-19 20:57:23

标签: r

如何使用RSQLite编写带日期的SQL查询。以下是一个例子。 dbGetQuery不会返回任何行。

require(RSQLite)
require(ggplot2)
data(presidential)
m <- dbDriver("SQLite")
tmpfile <- tempfile('presidential', fileext='.db')
conn <- dbConnect(m, dbname=tmpfile)
dbWriteTable(conn, "presidential", presidential)
dbGetQuery(conn, "SELECT * FROM presidential WHERE Date(start) >= Date('1980-01-01')")

2 个答案:

答案 0 :(得分:10)

只是为了说明,这很好用:

tmpfile <- tempfile('presidential', fileext='.db')
conn <- dbConnect(m, dbname=tmpfile)
p <- presidential
p$start <- as.character(p$start)
p$end <- as.character(p$end)

dbWriteTable(conn, "presidential", p)
dbGetQuery(conn, "SELECT * FROM presidential WHERE start >= '1980-01-01'")

您可以在文档here中了解SQLite中缺少本机日期类型。我一直在SQLite中使用字符串作为日期,以至于我完全忘记了这个问题。

是的,我已经编写了一个小型R函数,可以将数据框中的任何Date列转换为字符。对于简单的比较,将它们保存在YYYY-MM-DD就足够了,如果我需要算术运算,我会在R之后转换它们。

答案 1 :(得分:0)

继@joran 的回答之后,这里有一个简单的函数可以将日期列转换为 data.frame 的字符串。

mutate(df, across(where(is.Date), ~ format(.x, "%Y.%m.%d")))