使用 R 从 SQLite DB 获取最大日期

问题描述 投票:0回答:1

我正在尝试使用

MAX(date)
从列中获取
RSQLite
。我不确定问题出在哪里,在数据库中还是在
R

library(RSQLite)
library(tidyverse)
library(lubridate)

df <-  tibble(date_col = whole_seq <- seq(ymd("2024-08-01"), ymd("2024-08-24"), by = "day"))

sql_db <- dbConnect(RSQLite::SQLite(), "", extended_types = TRUE)

dbWriteTable(sql_db, "df", df)

dbSendQuery(sql_db, "SELECT MAX(date_col) FROM df") %>% dbFetch()
dbSendQuery(sql_db, "SELECT DATE(MAX(date_col)) FROM df") %>% dbFetch()
dbSendQuery(sql_db, "SELECT MAX(DATE(date_col)) FROM df") %>% dbFetch()
r sqlite dbi rsqlite
1个回答
0
投票

在 R 中,日期被编码为从 1970 年 1 月 1 日开始的连续整数。有些函数会忘记

"Date"
类属性并返回相应的数字。在这种情况下,你必须强制回到真正的约会课程。

library(RSQLite)
library(tidyverse)
library(lubridate)

df <-  tibble(date_col = whole_seq <- seq(ymd("2024-08-01"), ymd("2024-08-24"), by = "day"))

sql_db <- dbConnect(RSQLite::SQLite(), "", extended_types = TRUE)

dbWriteTable(sql_db, "df", df)

dbSendQuery(sql_db, "SELECT MAX(date_col) FROM df") %>% 
  dbFetch() %>% 
  mutate(max_date = as.Date(`MAX(date_col)`, origin = "1970-01-01"))
#>   MAX(date_col)   max_date
#> 1         19959 2024-08-24

创建于 2024-09-30,使用 reprex v2.1.0

© www.soinside.com 2019 - 2024. All rights reserved.