`
orc_lh
  • 浏览: 9281 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Oracle函数trunc、to_date、round、next_day、ratio_to_report的使用

 
阅读更多

 

create table A(

       aid number primary key,

       aname varchar2(20),

       adate date,

       atext varchar2(50)

);

 

create sequence a1

start with 1

increment by 1;

 

create table B(

       bid number primary key,

       bname varchar2(20),

       btype varchar2(10),

       bdate date,

       bcount number,

       aid number references A(aid)

);

 

create sequence b1

start with 1

increment by 1;

 

 

insert into A values(a1.nextval,'ly0',(to_date('2012-10-26','yyyy-MM-DD')),'aaa0');

insert into A values(a1.nextval,'ly1',(to_date('2012-10-25','yyyy-MM-DD')),'aaa1');

insert into A values(a1.nextval,'ly2',(to_date('2012-10-24','yyyy-MM-DD')),'aaa2');

insert into A values(a1.nextval,'ly3',(to_date('2012-10-23','yyyy-MM-DD')),'aaa3');

insert into A values(a1.nextval,'ly4',(to_date('2012-10-22','yyyy-MM-DD')),'aaa4');

insert into A values(a1.nextval,'ly5',(to_date('2012-10-21','yyyy-MM-DD')),'aaa5');

insert into A values(a1.nextval,'ly6',(to_date('2012-10-20','yyyy-MM-DD')),'aaa6');

insert into A values(a1.nextval,'ly7',(to_date('2012-10-19','yyyy-MM-DD')),'aaa7');

insert into A values(a1.nextval,'ly8',(to_date('2012-10-18','yyyy-MM-DD')),'aaa8');

insert into A values(a1.nextval,'ly9',(to_date('2012-10-17','yyyy-MM-DD')),'aaa9');

insert into A values(a1.nextval,'ly10',(to_date('2012-10-16','yyyy-MM-DD')),'aaa10');

insert into A values(a1.nextval,'ly11',(to_date('2012-10-16 22:24:12','yyyy-MM-DD hh24:mi:ss')),'aaa11');

 

insert into B values(b1.nextval,'lyB0','a',(to_date('2012-10-26','yyyy-MM-DD')),8,1);

insert into B values(b1.nextval,'lyB1','c',(to_date('2012-10-25','yyyy-MM-DD')),8,1);

insert into B values(b1.nextval,'lyB2','b',(to_date('2012-10-24','yyyy-MM-DD')),8,2);

insert into B values(b1.nextval,'lyB3','a',(to_date('2012-10-23','yyyy-MM-DD')),8,1);

insert into B values(b1.nextval,'lyB4','b',(to_date('2012-10-22','yyyy-MM-DD')),8,3);

insert into B values(b1.nextval,'lyB5','b',(to_date('2012-10-21','yyyy-MM-DD')),8,5);

insert into B values(b1.nextval,'lyB6','a',(to_date('2012-10-20','yyyy-MM-DD')),8,1);

insert into B values(b1.nextval,'lyB7','d',(to_date('2012-10-19','yyyy-MM-DD')),8,2);

insert into B values(b1.nextval,'lyB8','e',(to_date('2012-10-18','yyyy-MM-DD')),8,4);

insert into B values(b1.nextval,'lyB9','c',(to_date('2012-10-17','yyyy-MM-DD')),8,4);

insert into B values(b1.nextval,'lyB10','a',(to_date('2012-10-16','yyyy-MM-DD')),8,2);

insert into B values(b1.nextval,'lyB11','c',(to_date('2012-9-16','yyyy-MM-DD')),8,1);

insert into B values(b1.nextval,'lyB12','a',(to_date('2012-9-12','yyyy-MM-DD')),8,2);

insert into B values(b1.nextval,'lyB13','d',(to_date('2012-9-13','yyyy-MM-DD')),8,4);

insert into B values(b1.nextval,'lyB14','a',(to_date('2012-9-11','yyyy-MM-DD')),8,3);

commit;

 

select * from A;

 

select * from B;

 

 

--查询当天的所有数据

select * from A where trunc(adate) = trunc(sysdate);

 

--一个星期的第一天

select trunc(sysdate,'d') from dual;

 

--一个星期的最后一天

select next_day(trunc(sysdate,'d'),7) from dual;

 

--最近一个星期之内的

select * from a 

where adate>=trunc(to_date('2012-11-15','yyyy-MM-DD'),'d') 

and adate<=next_day(trunc(to_date('2012-11-15','yyyy-MM-DD'),'d'),7);

 

 

--查询一个月的数据

select * from A where trunc(adate,'mm') = trunc(to_date('2012-10-15','yyyy-MM-DD'),'mm')

 

 

--B表中时间为2012-9的所有数据

select * from B where trunc(bdate,'mm')=trunc(to_date('2012-09','yyyy-MM'),'mm');

 

 

--查找出B表中type为a,b,c的所有和,和他们所占的比例

select t1.*,t2.*,round(t1.typecount/t2.allcount,4)*100||'%' from 

(select btype,sum(bcount) as typecount from b where btype in('a','b','c') group by btype) t1,

(select sum(bcount) as allcount from b where btype in('a','b','c')) t2 

 

--查询每一行占总的比例

--方法一:

select b.*,t1.allcount,round(b.bcount/allcount,4)*100||'%' from 

(select sum(bcount) as allcount from B) t1,b;

--方法二:

select bid,bname,btype,bdate,bcount,aid,ratio_to_report(bcount) over() as scale from B;

 

 

分享到:
评论

相关推荐

    Oracle的to_date函数.doc

    Oracle 的 to_date 函数详解 Oracle 的 to_date 函数是一种日期转换函数,用于将字符串类型的日期转换为 DATE 类型的日期。该函数的主要用途是将用户输入的日期字符串转换为 DATE 类型的日期,以便于在 Oracle ...

    Oracle to_date() 用法细节.txt

    ### Oracle to_date() 函数详解 #### 一、概述 `to_date()` 是 Oracle 数据库中的一个重要函数,用于将字符串转换为日期格式。在实际应用中,尤其在处理时间戳或者进行日期比较时非常有用。本文将详细介绍 `to_...

    讲述Oracle中的to_date参数含义

    Oracle数据库中的`to_date`函数是用于将字符串转换为日期数据类型的函数,它在处理日期和时间相关的操作时非常常用。`to_date`的主要参数是一个包含日期信息的字符串,以及一个可选的日期格式模型,用于指定输入字符...

    Oracle to_date()函数的用法介绍

    总之,Oracle的to_date()函数是日期处理的核心,结合其他相关函数,如`to_char()`、`trunc()`和`round()`,可以实现灵活的日期和时间操作。了解这些函数的使用对于在Oracle数据库中进行日期处理至关重要。

    Oracle的to_date函数.docx

    Oracle的`to_date`函数是数据库系统中用于将字符串转换为日期类型的函数,它在处理日期和时间数据时非常有用。这个函数接受两个参数:要转换的字符串和一个表示输入字符串格式的模式。 1. `to_date`函数的日期格式...

    oracle中函数 trunc(),round(),ceil(),floor的使用详解

    1.round函数(四舍五入) 描述 : 传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果 参数: number : 欲处理之数值 decimal_places : 四舍五入 , 小数取几位 ( 预设为 0 ) select round(123.456, ...

    oracle 数值型函数,字符型函数,日期函数,转换函数,to_char

    Oracle数据库提供了丰富的日期处理函数,如`ADD_MONTHS`, `MONTHS_BETWEEN`, `NEXT_DAY`, `LAST_DAY`, `TRUNC`, `ROUND`, `EXTRACT`, `TO_CHAR`等,用于执行日期加减运算、计算两个日期之间的间隔、提取日期部分、...

    Oracle中TO-DATE格式.docx

    TO_DATE 函数是 Oracle 中一个非常重要的函数,它用于将字符串转换为日期类型。在 Oracle 中,日期类型可以是 DATE、TIMESTAMP、TIMESTAMP WITH TIME ZONE 等多种形式。TO_DATE 函数的基本语法是 TO_DATE( string, ...

    TRUNC_保留小数位

    TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_保留小数位TRUNC_...

    oracle中to_date详细用法示例(oracle日期格式转换)

    1. 日期和字符转换函数用法(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 ...

    Oracle中实现datadiff函数

    SELECT TO_DATE(TO_CHAR(TO_DATE(TO_CHAR(dateChar), 'YYYY-MM-DD HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS') INTO reallyDoDate FROM DUAL; RETURN (reallyDoDate); END CDateTime; ``...

    postgresql 兼容 oracle 函数

    3. **数学和转换函数**:如ROUND、TRUNC、TO_CHAR、TO_DATE等,这些在数据转换和计算中十分常用。 4. **游标和PL/SQL兼容性**:尽管PostgreSQL原生支持PL/pgSQL,但orafce提供了更接近Oracle的PL/SQL语法,包括游标...

    oracle函数得到下一个法定工作日期

    WHILE (MOD(next_day - TRUNC(next_day, 'IW'), 7) IN (0,6) OR next_day IN (SELECT holiday_date FROM holidays)) LOOP next_day := next_day + 1; END LOOP; RETURN next_day; END; / ``` 这个改进后的函数...

    Oracle中trunc()函数用法处理日期、数字类型数据

    Oracle 中的 TRUNC 函数用法处理日期、数字类型数据 TRUNC 函数是 Oracle 中的一个重要函数,它可以用来截断日期和数字类型的数据。下面我们将详细介绍 TRUNC 函数的用法和特点。 一、日期 TRUNC 函数 TRUNC 函数...

    oracle_时间函数

    本文将详细探讨Oracle中的时间函数,尤其是`to_date()`和`to_char()`这两个转换函数。 首先,`to_date()`函数用于将字符串转换为日期类型。这个函数需要两个参数:要转换的字符串和指定的日期格式模型。例如,`to_...

    oracle_date.rar_oracle

    TO_CHAR和TO_DATE函数则用于日期和字符串之间的转换,它们允许用户自定义日期格式。 描述中的“完全版”可能涵盖了日期的计算、比较、格式化、时间区处理等多个方面。例如,我们可以使用TRUNC函数截断日期到指定的...

    Oracle Date常用方法封装

    1. **创建Date对象**:在PL/SQL中,可以使用SYSDATE函数获取当前系统日期,或者通过TO_DATE函数将字符串转换为Date对象。例如: ```sql DECLARE my_date DATE; BEGIN my_date := SYSDATE; -- 获取当前系统日期 my...

    Oracle的to-date函数.pdf

    Oracle的`to_date`函数是用于将字符串转换为日期的函数,它是Oracle SQL中处理日期和时间数据的重要工具。在Oracle数据库中,日期和时间的表示方式有很多种,`to_date`函数允许我们根据特定的格式将文本字符串转化为...

Global site tag (gtag.js) - Google Analytics