Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 编写包含两种不同日期格式的循环_Sql_R - Fatal编程技术网

Sql 编写包含两种不同日期格式的循环

Sql 编写包含两种不同日期格式的循环,sql,r,Sql,R,我需要使用R来编写一个来自我的R环境所连接的数据库的查询。查询的结构如下所示: ALTER TABLE cph.table_id ADD PARTITION (event_date = 'YYYY-MM-DD') LOCATION 's3://external-dwh-company-com/id-to-idl/YYYYMMDD' 例如,今天的新增内容如下: ALTER TABLE cph.table_id ADD PARTITION (event_date = '2018-08-02') L

我需要使用R来编写一个来自我的R环境所连接的数据库的查询。查询的结构如下所示:

ALTER TABLE cph.table_id ADD PARTITION (event_date = 'YYYY-MM-DD')
LOCATION 's3://external-dwh-company-com/id-to-idl/YYYYMMDD'
例如,今天的新增内容如下:

ALTER TABLE cph.table_id ADD PARTITION (event_date = '2018-08-02')
LOCATION 's3://external-dwh-company-com/id-to-idl/20180802'
问题是,我需要对2018年1月3日之前的所有数据都这样做

因此,步骤如下所示:

initial_query <- paste(#however the above query would be formatted with the dates)

results_query <- dbGetQuery(conn,  initial_query)

initial_query考虑使用
lapply
seq
在目标开始日期后的天数范围内循环,将字符串与
sprintf
和相应的日期格式连接起来:

# GET DIFFERENCE BETWEEN TODAY AND DESIRED BEGIN DATE
date_diff <- Sys.Date() - as.Date("2018-03-01")

date_diff[[1]]
# 155

sql <- "ALTER TABLE cph.table_id ADD PARTITION (event_date = '%s')
        LOCATION 's3://external-dwh-company-com/id-to-idl/%s'"

# RUN QUERY SEQUENTIALLY ADDING TO BEGIN DATE
output <- lapply(seq(1, date_diff[[1]]), function(i)
             dbGetQuery(conn, sprintf(sql, strftime(as.Date("2018-03-01") + i, "%Y-%m-%d"),
                                           strftime(as.Date("2018-03-01") + i, "%Y%m%d"))))
#获取今天和所需开始日期之间的差异

date_diff是否确实要为每天添加分区?记录是否为每小时/分钟级别?或者每个事件日期有数百万行?这是什么RDBMS?@Parfait是的。你所说的关系数据库管理系统是什么意思?