Select last_day(add_months(sysdate,-1)) from dual;得到上月最后一天
創新互聯科技有限公司專業互聯網基礎服務商,為您提供成都服務器托管,高防服務器租用,成都IDC機房托管,成都主機托管等互聯網服務。
add_months(sysdate,-1) from dual;得到距當前時間一個月的時間(-1是上一個月,1是下一個月)
Select last_day(sysdate) from dual;得到當前月的最后一天
不知道你是否明白了?
設:
1、數據表名稱為:TABLE1
2、TABLE1中的date字段名為:COLUMN1
獲取去年到今年的上月底的數據的SQL如下:
select?*
from?TABLE1?t
where?t.COLUMN1?=?add_months(trunc(sysdate,'YYYY'),-12)
and?t.COLUMN1??trunc(sysdate,'MM')
題主是否想詢問“oracle怎樣保留月底數據其他刪除”?oracle是指數據,
1、首先將自己希望保留的這個月的數據導出到一個臨時表中。
2、其次然后將2500萬數據整個刪除,接著然后將整個表刪除。
3、最后將數據從臨時表全部導回來即可。
last_day函數的作用就是取每月的最后一天。個和sysdate相結合,然后再等于sysdate就行了。
注意要日期相等,不然就永遠等于不了,因為last_day和sysdate都有時分秒,不可能正好相等的。
當然設成變量也可以。
1、查詢確定年月的數據,使用to_date或to_char都可以實現
SELECT?*?FROM?表名
WHERE?TO_CHAR(日期列,'YYYY-MM')?=?TO_CHAR('2013-06','YYYY-MM')???或者
SELECT?*?FROM?表名
WHERE?日期列?=?TO_Date('2013-06','YYYY-MM')
2、查詢前一個月
select?concat(to_char(sysdate,'yyyy')||to_char(add_months(sysdate,-1),?'-MM-'),'01?00:00:00')start_time,???
concat(to_char(sysdate,'yyyy')||to_char(add_months(sysdate,-1),?'-MM-')||to_char(LAST_DAY(sysdate),'dd?'),'23:59:59')?end_time?????from?dual
3、查詢前一天
select?to_char(sysdate-1,'yyyy-mm-dd?')||'00:00:00'?start_time,to_char(sysdate-1,'yyyy-mm-dd?')||'23:59:59'?end_time??from?dual
以當前月份為例:
SELECT max(b.a)
FROM (SELECT trunc(SYSDATE, 'mm') + ROWNUM - 1 a
? ? ?FROM dba_objects
? ? where rownum 32) b
WHERE to_char(b.a, 'day') = '星期五';
結果:
如果是其他月份,則更換sysdate為當月的1號的日期即可。