数据库-Oracle学习笔记(5)

Oracle中的数值(数字)操作

数值(数字)类型

  • (1)number(n) 表示整数 n表示数字的总位数,n的取值是1~38
  • (2)number(n,m) 表示浮点数(小数) n表示数字的总长度,m表示小数点后长度

数值函数

round函数:用于四舍五入

  • 语法:round(n, m)
    –参数中的n可以是任何数字,指要被处理的数字
    –m必须是整数
    –m取正数,则四舍五入到小数点后第m位
    –m取值为0,则四舍五入到整数位
    –m取值为负数,则四舍五入到小数点前m位
    –m缺省,默认值是0
  create table u3( 
     id number(10,4)
  );
  insert into u3 values(45.678);  45.678
  insert into u3 values(round(45.678, 2));   45.68
  insert into u3 values(round(45.678, 0));   46
  insert into u3 values(round(45.678, -1));  50
  insert into u3 values(round(45.678));   46

trunc函数:用于截取

  • 语法:trunc(n,m) n和m的定义和round函数中n和m相同,不同的是功能上按照截取的方式处理。
  insert into u3 values(trunc(45.678, 2));  45.67
  insert into u3 values(trunc(45.678, 0));   45
  insert into u3 values(trunc(45.678, -1));  40
  insert into u3 values(trunc(45.678));   45

mod函数:求余数

  • 语法:mod(m,n) 求m除以n后的余数
  • 说明:如果n为0,直接返回m的值
  select ename, sal, mod(sal, 1000) from emp;

ceil和floor函数

  • 语法:ceil(n) 取大于或等于n的最小整数值
    floor(n) 取小于或等于n的最大整数值
  • 例如:n=4.5 ceil(4.5)–>5 floor(4.5) -->4
  insert into u3 values(ceil(45.678));      46
  insert into u3 values(floor(45.678));   45

Oracle日期操作

日期类型

date

date类型是Oracle中最常用的日期类型,用于处理日

timestamp

与date类型的区别不仅可以保存日期和时间,还能够保存小数秒,最高能精确到ns(纳秒级)。

日期关键字

sysdate关键字

是一个Oracle的内部函数,返回的是当前的系统时间,精确到秒,默认显示格式DD-MM-YY — 03-3月-20

select sysdate from dual;   03-3-20

dual表是Oracle中的一个虚表,表中只有一列,一行数据X

systimestamp关键字

也是Oracle中的一个内部函数,返回当前系统时间,精确到毫秒。

select systimestamp from dual;
03-3-20 03.06.07.384000 下午 +08:00

日期转换函数

to_date函数:

  • 功能:将字符串按照特定格式转换为日期类型
  • 语法:to_date(str, fmt) str表示要转换的字符串 fmt表示日期格式
查询198311日之后入职的员工
select ename, hiredate from emp;
select ename, hiredate from emp where sal>1000;
select ename, hiredate from emp where hiredate>1983-01-01;
--ORA-01861: 文字与格式字符串不匹配
将’1983-01-01’字符串类型转换为日期类型的,使用to_date函数
to_date(1983-01-01,’YYYY-MM-DD’)
select ename, hiredate from emp 
where hiredate>to_date(1983-01-01,’YYYY-MM-DD’);

常用的日期格式如下:
YY 表示2位数字的年 20年 19年 18年
YYYY 表示4位数字的年 2020 2019年
MM 表示2位数字的月 03 02 12 11
MON 简写的月份 Jan
MONTH 全拼的月份 January
DD 2位数字的天 01 02 03号
DAY 周几的全拼
HH24 24小时制度
HH12 12小时制度
MI 分钟
SS 秒

to_char函数

  • 功能:将其它类型的数据转换为字符串类型
  • 语法:to_char(date, fmt) date表示要转换的日期 fmt表示转换字符串的指定格式
select hiredate from emp;
select hiredate,  to_char(hiredate,'YYYY-MM-DD HH24:MI:SS')  from emp;   02
select hiredate,  to_char(hiredate,'YYYY-MONTH-DD HH24:MI:SS')  from emp;   2select hiredate,  to_char(hiredate,'YYYY-MON-DD HH24:MI:SS')  from emp;    2select hiredate,  to_char(hiredate,'YYYY-MON-DAY HH24:MI:SS')  from emp;    星期一
按照 ’19801217日’ 格式查询出入职日期
select hiredate, to_char(hiredate, 'YYYY"年"MM"月"DD"日"')  from emp;
说明:外面是’’,在’’号的内部在表示字符串是只能用’’号了。
或者
select hiredate,to_char(hiredate,'YYYY')
||'年'||to_char(hiredate,'MM')||'月'||to_char(hiredate,'DD')||'日' from emp;

日期常用的函数

last_day函数

  • 功能:返回日期所在月的最后一天
  • 语法:last_day(date) 返回date日期所在月的最后一天
select last_day('20-2月-20') from dual;
select last_day('03-3月-20') from dual;
select last_day(sysdate) from dual;

add_months函数

  • 语法:add_months(date, i) 返回日期date加上i个月后的日期值。
  • 说明:–参数i可以是任何数字,大部分时候i的取值都是正值整数。
    –如果i是小数,会被截取整数后再参与运算
    –如果i是负数,会减去i个月后的日期值
select sysdate, add_months(sysdate,3),
add_months(sysdate,3.14), add_months(sysdate,-3) from dual;

months_between函数

  • 语法:months_between(date1, date2) date1-date2表示计算date1和date2两个日期值之间间隔了多少个月
计算200991日到20091210日之间间隔了多少个月
select months_between('10-12月-09','01-9月-09') from dual;
练习:计算emp员工表中从入职开始到现在间隔了多少个月
select months_between(sysdate,hiredate) from emp;

关于日期常见函数的补充以及空值操作可点击本处

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值