想查詢N天前的日誌文件相關信息,日誌文件名格式爲:interface_YYYYMMDD.log
html
在oracle中,能夠對data
類型的直接+1
來將天數加一
具體過程爲:先截取文件名上時間,轉爲date
類型,再加一後轉爲char
與傳入的參數值checkDate
進行比較to_char(to_date(SUBSTR(t.file_name, 11, 8), 'yyyymmdd') + 1, 'yyyymmdd') = &checkDate
固然,因爲對date
類型的加減操做是基於天
的,能夠經過對基準單位進行相關操做,例如:oracle
SYSDATE - 10
:十天前SYSDATE + 1/24
:一小時後SYSDATE + 1/(24 * 60)
:一分鐘後SYSDATE + 1/(24*60*60)
:一秒後也存在另外一種寫法,使用INTERVAL時間間隔:函數
SYSDATE + INTERVAL '100' DAY(3)
:一百天之後,注意DAY(3):3表示精確度,表示偏移量'100'爲3位。DAY默認爲DAY(2)SYSDATE + INTERVAL '12' HOUR
:十二小時後SYSDATE + INTERVAL '100' MINUTE
:一百分鐘後SYSDATE + INTERVAL '100' Second
:一百秒後也許你想到了使用INTERVAL '1' MONTH
來計算。確實,通常狀況下,使用該方法獲得的結果是正確的。驗證.net
SELECT to_date('20170831', 'yyyymmdd') + INTERVAL '1' MONTH FROM dual
會發現報錯:ORA-01839日誌
Oracle存在add_months(date, offset)函數,能夠計算N月前:add_months(SYSDATE, -1)
:一月前
一樣,驗證20170831:code
SELECT add_months(to_date('20170831', 'yyyymmdd'), 1) FROM dual
輸出爲:2017/9/30htm
add_years()
? 並無……add_months(to_date('20170831', 'yyyymmdd'), -12*3)
:三年前blog