select to_char(TO_DATE('20171123', 'YYYYMMDD'), 'yyyyiw') as week, --oracle求当年的第几周
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名、雅安服务器托管、营销软件、网站建设、米脂网站维护、网站推广。
to_char(TO_DATE('20171123', 'YYYYMMDD'), 'yyyyww') as week2, --oracle求当年的第几周
to_char(TO_DATE('20171123', 'YYYYMMDD'), 'yyyy') as year, --oracle求第几年
to_char(TO_DATE('20171123', 'YYYYMMDD'), 'yyyymm') as month, --oracle求当年的第几月
to_char(TO_DATE('20171123', 'YYYYMMDD'), 'yyyyddd') as day, --oracle求当年的第几天
to_char(TO_DATE('20171123', 'YYYYMMDD'), 'yyyyq') as quarter -- oracle求当年的第几季度
from dual
-----------
SELECT
to_char(sysdate,'day') 星期几,
to_char(SYSDATE,'ddd') 第几天,
to_char(SYSDATE,'ww') 第几周,
to_char(SYSDATE,'mm') 第几月,
to_char(SYSDATE,'q') 第几季
FROM dual
oracle中的date类型字段,截取年份可用to_char函数。
工具:oracle 10g
步骤:
1、如emp表中有hiredate字段为date类型的数据。
2、截取其中的年份部分,用如下语句:
select empno,ename,job,mgr,to_char(hiredate,'yyyy'),sal,comm,deptno from emp;
3、运行后结果,可以看出年份已将截取出来了:
1、创建测试表,create table test_date(v_date date);
2、插入测试数据,
insert into test_date
select sysdate - level * 10 from dual connect by level 100
3、查询表中所有记录,select * from test_date,可以看到时间格式为年月日时分秒,
4、编写sql,将时间截取到年月,
select t.*,
to_char(v_date, 'yyyymm') v_date_mon1,
trunc(v_date, 'mm') v_date_mon2
from TEST_DATE t
一般情况下,你的明细数据表都有个日期字段来表明你明细的时间,
数据量比较小可以这样
select sum(...) from tabname where to_char(时间,'q')=你想查询的季度
如果数据量比较大,建议你根据明细表建立一个快速刷新的物化视图,物化视图是根据季度、星期等等的预先统计数据,到时候你要的数据直接从物化视图中查询即可