马上学会oracle-----二
今天主要的功课是oracle的select语句,sql语句在上一篇文章
查询语句中使用函数
round(**)用于数字的四舍五入。
案例1 计算金额的四舍五入。
select ename,salary*0.1234567 s1,
round(salary*0.1234567,2) s2,
round(salary*0.1234567) s3 from emp_xxx;
案例2 数字函数 trunc(**)
trunc()用于截取,如果没有第二个参数,默认是0
select ename,salary*0.1234567 s1,
round(salary*0.1234567,2) s2,
round(salary*0.1234567) s3,
trunc(salary*0.1234567,2) s4 from emp_xxx;
案例3,日期函数sysdate
获取系统当前时间
select sysdate from dual;
//虚表dual是Oracle用于操作函数的方式,属于
sys用户,共享给所以用户使用,虚表dual是单行
单列的表,表中存放一个常量数据x
select * from dual;
虚表的意义,更方便的操作函数或者查询常量
如下例。表中有多少条数据,常量就会出现多少次
select sysdate from emp_xxx;
//感觉查询结果与真实的有出入
//没有出入,有几条数据则显示几次常量(当前时间)
案例4 日期数据相减
计算员工入职多少天
//我的错误解 select sysdate-hiredate from emp_xxx;
select ename,hiredate,(sysdate-hiredate)days from emp_xxx;
日期数据相减,得到两个日期之间的天数差,不足一天用小数表示,
可以用round函数处理,
select ename, hiredate,round(sysdate-hiredate)days from emp_xxx;
案例5 日期函数 months_between()**
计算员工入职多少个月,保留有小数
select ename,hiredate,
months_between(sysdate,hiredate)months from emp_xxx;
案例6 不保留小数。入职为整数个月
select ename,hiredate,
round(months_between(sysdate,hiredate))months from emp_xxx;
案例7 计算12个月之前的时间点
select add_months(sysdate,-12)from dual;
//暂时未发现有add_year等方法 select add_year(sysdate,-5)from dual;
案例8 日期函数 last_day()*
计算本月最后一天
select last_day(sysdate) from dual;
案例9 转换函数
转换函数 to_char(日期数据,格式):把日期转化为字符数据
把时间数据按照指定格式输出。
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
案例10 把时间数据按指定格式输出
select to_char(sysdate,'year month dd day dy') from dual;
//输出星期几的时候 用day 用dy也可以
select to_char(sysdate,'year month dd dy') from dual;
案例11 把时间数据按指定格式输出
select to_char(sysdate,'yyyy/mm/dd')from dual;
select to_char(sysdate,'mm/yyyy/dd')from dual;
select to_char(sysdate,'mm/y/dd')from dual;
小结:日期格式
1,常用日期格式
yyyy 四位数字年 如:2011
year 全拼的年 如 twenty eleven
month 全频的月 如 november 或者11月
mm 两位数字月 如 11
mon 简拼的月 如nov,中文没有简拼
dd 两位数字日
day 全拼的星期