重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
使用add_month()函数就行了:
创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计、网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的吉州网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
select * from order t where to_date(t.time, 'yyyy-mm-dd hh24:mi:ss') between add_month(sysdate, -3) and sysdate
//不管时间是什么类型,查询的时候先to_date() 转换为日期型就OK了。
首先查看oracle数据库的编码:SQLselect*fromnls_database_parameterswhereparameter='NLS_CHARACTERSET';修改字符集编码(这会对数据库的数据有直接的影响,谨慎操作):SQLconn/assysdbaSQLshutdownimmediate;SQLstartupmount;SQLALTERSYSTEMENABLERESTRICTEDSESSION;SQLALTERSYSTEMSETJOB_QUEUE_PROCESSES=0;SQLALTERSYSTEMSETAQ_TM_PROCESSES=0;SQLalterdatabaseopen;SQLALTERDATABASEcharactersetINTERNAL_USEZHS16GBK;SQLshutdownimmediate;SQLstartup
假设有个订单表orders里有个订单时间字段o_time(它带有具体的时间:时分秒):
delcare
v_count number;
qry_mon date;
begin
qry_mon := to_date('2013-04-03',''); --要查询的月份
select count(*) into v_count from orders where o_time = trunc(qry_mon,'mm') and o_time trunc(qry_mon,'mm')+1; --查询1号00:00:00 到2 号00:00:00之间的订单
if v_count=0 then
--1号没订单,查询上月最后1笔订单
select count(*) into v_count from orders
where rownum=1
and o_time=(select max(o_time) from orders
where o_time =add_months(trunc(qry_mon,'mm'),-1) --上月1号00:00:00
and o_time=trunc(qry_mon,'mm')-1/60/60/24 --上月月末23:59:59
--上一句也可以这样 and o_time trunc(qry_mon,'mm') --查询月的1号00:00:00
);
。。。
。。。
else
--处理qry_mon这个月一号订单
end if;
end;
/