重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
oracle获得上个月的月份:
天宁网站制作公司哪家好,找创新互联建站!从网页设计、网站建设、微信开发、APP开发、响应式网站设计等网站项目制作,到程序开发,运营维护。创新互联建站于2013年创立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联建站。
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;
需要看日期字段存储的是字符还是日期类型的数据,方法略有不同
如果存储的是字符型(如2015-09-01类型的数据)字段,可用以下语句:
select * from 表名 where to_char(sysdate,'yyyy-mm')=substr(日期字段,1,7);
如果存储的是日期型字段,可用以下语句:
select * from 表名 where to_char(sysdate,'yyyy-mm')=to_char(日期字段,'yyyy-mm');
所用函数说明:
to_char在语句中是将日期转为字符的函数,格式则为函数中设定的'yyyy-mm'格式。
sysdate代表当前日期时间,是日期型数据。
substr是截取函数,第一个参数为要截图的字段,第二个参数为截取的起始位,第三个参数代表截取的长度。
闲着无聊给你写了个函数
create function FN_TEST_DATE(i_time date)
return int as
v_int varchar2(10);
v_int1 varchar2(10);
v_int2 varchar2(10);
begin
v_int1:=7-to_char(TRUNC(i_time,'mm') ,'D')+1;
v_int2:=to_number(substr(to_char(i_time,'yyyymmdd'),7,2));
if v_int2=to_number(v_int1) then
v_int:=1;
elsif v_int2=v_int1+7 then
v_int:=2;
elsif v_int2=v_int1+14 then
v_int:=3;
elsif v_int2=v_int1+21 then
v_int:=4;
elsif v_int2=v_int1+28 then
v_int:=5;
else
v_int:=6;
end if;
return(v_int);
end;
--参数规范性就没管了,统计一个月直接调用然后分组,统计多个月的,再按月份分组就行
select FN_TEST_DATE(sysdate) from dual --查看当前时间是本月第几周
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