十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
1、创建测试表,
10多年的山亭网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整山亭建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“山亭网站设计”,“山亭网站推广”以来,每个客户项目都认真落实执行。
create table test_date_2(id int, v_date date);
2、插入测试数据
insert into test_date_2 values(1,sysdate);
insert into test_date_2 values(2,sysdate-20);
insert into test_date_2 values(3,sysdate-30);
insert into test_date_2 values(4,sysdate-40);
commit;
3、查询表中全量数据,select t.* from test_date_2 t;
4、编写语句,查询当月份的上一个月;
select t.*, add_months(v_date,-1) v_date2 from test_date_2 t;
20100228
如果想要+1月到月末 如20100228下个月的月末,单单+1月的话只是20100328;可以先20100228+1天;到20100301再+1月到20100401;再-1天回来20100331。
好像笨了点。
假设有个订单表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;
/
select * from 表名 where to_char(日期列,'yyyy-mm')=to_char(add_months(sysdate,-1),'yyyy-mm')
当月数据
select * from table t
where t.create_time
=TRUNC(SYSDATE, 'MM')
and
t.create_time=last_day(SYSDATE) create_time为你要查询的时间
当年数据
select * from table t
where t.create_time
=trunc(sysdate,'YYYY')
and
t.create_time=add_months(trunc(sysdate,'YYYY'),12)-1
本周(国外周日为一个星期第一天)
where t.create_time =trunc(sysdate,'day')+1 and
t.create_time=trunc(sysdate,'day')+6 本周(国内周一为一个星期第一天)
where t.create_time =trunc(next_day(sysdate-8,1)+1) and
t.create_time=trunc(next_day(sysdate-8,1)+7)+1
oracle获得上个月的月份:
select to_char(add_months(trunc(sysdate),-1),'yyyymm') from dual;
oracle获得下个月的月份:
select to_char(add_months(trunc(sysdate),1),'yyyymm') from dual;
oracle获得上个月的第一天日期:
select data_dt ,ADD_MONTHS(TRUNC( to_date(data_dt, 'YYYY-MM-DD'),'MM' ),-1) from a_web_visit_origin;
oracle获得上个月的第一天日期(符合当地的日期格式):
select data_dt ,TO_CHAR (ADD_MONTHS(TRUNC( to_date(data_dt, 'YYYY-MM-DD'),'MM' ),-1),'YYYY-MM-DD') from a_web_visit_origin;
oracle获得上个月当天日期:
select data_dt ,TO_CHAR (ADD_MONTHS(TRUNC( to_date(data_dt, 'YYYY-MM-DD') ),-1),'YYYY-MM-DD') from a_web_visit_origin;
select data_dt ,ADD_MONTHS(TRUNC( to_date(data_dt, 'YYYY-MM-DD'),'MM' ),-1) from a_web_visit_origin;
oracle获得上个月的第一天日期(符合当地的日期格式):
select data_dt ,TO_CHAR (ADD_MONTHS(TRUNC( to_date(data_dt, 'YYYY-MM-DD'),'MM' ),-1),'YYYY-MM-DD') from a_web_visit_origin;
oracle获得上个月当天日期:
select data_dt ,TO_CHAR (ADD_MONTHS(TRUNC( to_date(data_dt, 'YYYY-MM-DD') ),-1),'YYYY-MM-DD') from a_web_visit_origin;
扩展资料:
日期和字符转换函数用法(to_date,to_char):
日期转化为字符串:select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;
获取时间的年: select to_char(sysdate,'yyyy') as nowYear from dual;
获取时间的月: select to_char(sysdate,'mm') as nowMonth from dual;
获取时间的日:select to_char(sysdate,'dd') as nowDay from dual;
获取时间的时:select to_char(sysdate,'hh24') as nowHour from dual;
获取时间的分:select to_char(sysdate,'mi') as nowMinute from dual;
获取时间的秒:select to_char(sysdate,'ss') as nowSecond from dual;