2017-09-18 15 views
0

私の質問は2つの部分に分かれています。R日付/時刻の計算

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()機能が動作しますように、私は範囲に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()関数を使用することにより、私は2017年8月30日五時00分00秒に、日付範囲2017年8月29日のデータをプルすることができるであろう、五時00分00秒私の例では1日になります。

私の計算では、より正確な結果を得るために、08/29/2017、11:59:59 PMを超えるものはすべて破棄したいと考えています。 この目的のために、そこにifelseという文を追加しました。しかし、これは私が期待しているように行動していないし、なぜそうしないのか混乱している。

+0

問題/質問は正確には何ですか? – Dave2e

答えて

0

残念ながら、私はまだ主な質問にコメントできません。

私はあなたの質問への答えを得るのチャンスを改善するために、あなたの質問には、2つの調整を行うことをお勧め:

1)あなたの例をしてください、再現例えば日付範囲を指定し、適切に定義された関数などでコードをラップします。

2)達成しようとしていることを説明してください。あなたの意図と期待される結果は?

+0

Heyy christian、私は質問にいくつかの変更を加えて、それに多くの情報を追加しました。理解を深めるために何かを追加する必要がある場合は、ご返答ください。 –