promotion image of download ymail app
Promoted

關於SQL日期語言

剛剛看到一段SQL日期的語言

有人可以幫我解釋這是在求哪一段日期??

交易日 BETWEEN TRUNC(LAST_DAY(ADD_MONTHS(SYSDATE,-4))+1) AND TRUNC(LAST_DAY(ADD_MONTHS(SYSDATE,-3)))

其中 "TRUNC" 是有特別的意思嘛??

1 Answer

Rating
  • 提姆
    Lv 5
    1 decade ago
    Favorite Answer

    這是Oracle SQL/PLUS的語法:

    sysdate是資料庫的系統時間

    ADD_MONTHS(SYSDATE,-4) => 倒退4個月

    LAST_DAY         => 取該月最後一天

    LAST_DAY( ) + 1       => 取該月最後一天+1 = 下個月第一天

    TRUNC( )          => 取整數,用在日期上表示捨去時分秒,變成該日的00:00

     

    若以今日9/19為準,執行此SQL會變成查詢6/1 00:00:00到6/27 00:00:00,

    注意:6/27的交易資料因〔時分秒>00:00:00〕不會進來,故為6/1-6/26的資料。

     

    寫成這樣,結果會一模一樣:

    交易日 BETWEEN TRUNC(ADD_MONTHS(SYSDATE,-3), 'mm') AND TRUNC(ADD_MONTHS(SYSDATE,-2), 'mm')-4

    2008-09-19 10:50:47 補充:

    TRUNC(...., 'mm') 是把日期值的〔日時分秒〕捨去,變成該月1日的00:00:00

    • Commenter avatarLogin to reply the answers
Still have questions? Get your answers by asking now.