2017-09-18 18 views
0

내 질문은 두 부분으로 나누어 져 있습니다 :R - 날짜/시간 계산

1 부분 : 나는 함수, 내가 날짜 범위에 대한 정보를 끌어 사용 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() 함수를 사용한다. getdata() 기능이 작동 할 수 있도록 여기에

rf_log_perform <- get_data(display_facility_decode(input$facNum2), 
input$dateRange2, input$dateRange2 + 1) 

내가 대신 범위를 단지 하나의 날짜를 사용하고 있기 때문에이 나는 범위에 하나를 추가했습니다.

그런 다음 선택한 날짜에 대해 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() 함수를 사용하여, I는 5시 0분 0초 2017년 8월 30일에, 기간 2017년 8월 29일 데이터를 당길 수있을 것이다 5시 0분 0초 내 모범을 보일 날이 되십시오.

하지만 제 계산에는 더 정확한 결과를 얻기 위해 08/29/2017, 오후 11:59:59 이상인 모든 항목을 삭제하고 싶습니다. 이를 위해 ifelse 진술을 추가했습니다. 그러나 이것은 내가 기대하는 것처럼 행동하지 않고 왜 그렇지 않은지 혼란 스럽습니다.

+0

문제/질문이 정확히 무엇입니까? – Dave2e

답변

0

불행히도 여전히 주요 질문에 대해서는 언급 할 수 없습니다. 귀하의 예를 재현 예를 들어, 확인하시기 바랍니다

1) :

나는 질문에 대한 답을 얻기에 기회를 개선하기 위해 귀하의 질문에이 조정을하는 것이 좋습니다 날짜 범위를 제공하고 코드를 잘 정의 된 함수로 묶으십시오.

2) 달성하려는 것을 설명하십시오. 당신의 의도와 예상되는 결과는 무엇입니까?

+0

Heyy christian, 질문에 대한 추가 정보를 추가했습니다. 더 나은 이해를 위해 다른 것을 추가해야하는 경우 응답하십시오. –