我的问题分为两部分:
第一部分:
我有一个函数getdata()
,我用它来提取日期范围的信息。
get_data <- function (fac_num, start_date, end_date) {
if (!(is.null(fac_num) | is.null(start_date) | is.null(end_date))) {
if(end_date - start_date > 7) {
start_date <- end_date - 7
#start_date <- as.Date('2017-07-05')
#end_date <- as.Date('2017-07-06')
#fac_num <- "005"
}
new_start_date <- paste0(start_date,' 05:00:00')
new_end_date <- paste0(end_date + 1,' 05:00:00')
qry <- paste0("SELECT FAC_NUM, USER_ID, APPL_ID, FUNC_ID, ST_ID, NXT_ST_ID, RESP_PRMT_DATA,
ST_DT_TM, END_DT_TM, RESP_PRMT_TY_CDE,
REQ_INP_DATA FROM OPSDBA.STG_RFS_INTERACTION WHERE TRANS_ST_DT_TM >= DATE'",
start_date,"' AND TRANS_ST_DT_TM BETWEEN TO_TIMESTAMP('",new_start_date,"', 'YYYY-MM-DD HH:MI:SS') AND TO_TIMESTAMP('",new_end_date,"', 'YYYY-MM-DD HH:MI:SS')
AND APPL_ID='CTS' AND FAC_NUM='",fac_num,"'")
然后我对它进行计算。
此外,在我的计划中。我使用这个getdata()
函数为一组新的分析提取数据。
rf_log_perform <- get_data(display_facility_decode(input$facNum2),
input$dateRange2, input$dateRange2 + 1)
由于我只使用一个日期而不是范围,因此我在范围中添加了一个日期,以便getdata()
函数可以正常工作。
然后,我希望以这样的方式修改日期范围:它不会显示所选日期过去11:59的任何内容。
rf_log_perform$date <- ifelse(strftime(rf_log_perform$st_dt_tm, format="%H:%M:%S")<'05:00:00',
format(as.POSIXct(strptime(rf_log_perform$st_dt_tm - 1*86400 , '%Y-%m-%d %H:%M:%S')),format = '%Y-%m-%d'),
format(as.POSIXct(strptime(rf_log_perform$st_dt_tm , '%Y-%m-%d %H:%M:%S')),format = '%Y-%m-%d'))
通过使用getdata()
功能,我可以为日期范围08/29 / 2017,05:00:00至08/30/2017,05:00:00提取数据。在我的例子中是一天。
但是对于我的计算,我想丢弃超出08/29/2017,晚上11:59:59的所有内容,以获得更准确的结果。
为此,我在那里添加了一个ifelse
语句来对其进行排序。但这并不像我期望的那样,并且为什么不这样做而感到困惑。
答案 0 :(得分:0)
不幸的是,我仍然无法评论主要问题。
我建议您对问题进行两次调整,以提高回答问题的机会:
1)请使您的示例可重现,例如提供日期范围,将代码包装在定义良好的函数中等。
2)解释你想要达到的目标。你的意图和预期结果是什么。