使用带有RSQLite的日期

jbr*_*yer 12 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')")
Run Code Online (Sandbox Code Playgroud)

jor*_*ran 12

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

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'")
Run Code Online (Sandbox Code Playgroud)

您可以在此处的文档中了解SQLite中缺少本机日期类型.我一直在SQLite中使用字符串作为日期,我实际上完全忘记了这个问题.

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