如何使用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')")
答案 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")))