我正在尝试使用SQLDF函数从日期字段中提取年份。我希望SQL的DATEPART可以工作但是我需要使用STRFTIME(我认为)。当我申请代码时,我在YYYY下获得NA。我的代码如下:
dw_Calendar = read.csv("C:\dw_Calendar.csv")
# ensure that the date field is in a date format
dw_Calendar$newDate <- as.Date(dw_Calendar$FullDate)
CalendarSum <- sqldf("
select newDate,
strftime('%U', newDate) as YYYY
from dw_Calendar
")
答案 0 :(得分:2)
sqldf使用的默认sqlite后端不适合处理日期,因为它没有日期或日期时间类型,但它确实具有处理它们的功能,因此您可以执行此操作。 (请注意,R Date类型存储在sqlite数据库中,自Epoch以来的几天,乘以3600 * 24,我们得到自Epoch以来的秒数,它将其置于sqlite的strftime期望的时间戳表示中。)
library(sqldf)
mydates <- data.frame(date = as.Date("2000-01-01")) # test input
sqldf("select strftime('%Y', date * 3600 * 24, 'unixepoch') year from mydates")
## year
## 1 2000
如果您使用H2后端,它会更容易,因为它具有实际日期类型和相关功能:
library(sqldf)
library(RH2)
sqldf("select year(date) year from mydates")
## year
## 1 2000
注意:下次请提供自包含的代码和问题中的所有输入,以便其他人可以运行您的代码。