扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
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号的日期即可。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流