Day02
一、对数字操作的函数
1、round
-
round(参数1,参数2):四舍五入
-
参数1代表四舍五入的字段,参数2代表精确度(-1代表十位,0代表个位)
-
select total,round(total,0) from s_ord
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z46I1Bb8-1662017013406)(C:\Users\PC\AppData\Local\Temp\1661998861250.png)]
2、trunc(将数字截尾取整)
-
trunc(参数1,参数2):截取
-
参数1代表截取的字段,参数2代表精确度的位数。
-
round 有四舍五入 trunc 直接舍去
-
select total,trunc(total,0) from s_ord;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uUy7B5RJ-1662017013409)(C:\Users\PC\AppData\Local\Temp\1661999201319.png)]
3、mod(取余)
-
mod(参数1,参数2):取余
-
参数1代表被除数,参数2代表除数
-
select mod(10,3) as “余数” from dual
-
其中dual是虚表,因为oracal中from必须和select中同时存在
-
mysql中可以只存在select,不存在from
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hivYAgC0-1662017013409)(C:\Users\PC\AppData\Local\Temp\1661999487068.png)]
二、对日期操作的函数
1、months_between(计算差值)
-
months_between(参数1,参数2) :计算差值
-
参数1代表计算的第一个月,参数2代表第二个月,
-
参数1的值减去参数2的值,从而计算差几个月
-
select months_between(‘01-5月-2022’,‘01-1月-2022’) from dual;
-
主要月份的字符需要加上
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-58uHd9I7-1662017013411)(C:\Users\PC\AppData\Local\Temp\1661999961297.png)]
2、add_months(添加月份)
-
add_months(参数1,参数2):对日期进行增减
-
参数1代表被操作的日期,参数2代表第二个参数运算数字
-
select add_months(‘01-5月-2011’,3),add_months(‘01-5月-2011’,-3) from dual;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fjrTiXso-1662017013412)(C:\Users\PC\AppData\Local\Temp\1662001030226.png)]
-
习题8:从订单表中查询出两个月之内的所有订单信息
-
select *from s_ord where data_ordered between add_months(‘03-11月-1992’,-2) and ‘03-11月-1992’;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cvvFD00C-1662017013413)(C:\Users\PC\AppData\Local\Temp\1662001843812.png)]
-
3、next_day(求当前日期的下个星期几)
-
next_day(日期,‘星期几’):下个星期X的日期
-
select sysdate,next_day(sysdate,‘星期五’) from dual;
-
其中的‘星期五’必须要这样写
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ut1D41EZ-1662017013414)(C:\Users\PC\AppData\Local\Temp\1662002201742.png)]
4、last_day(求当前日期所在月份的最后一天)
-
last_day(日期)
-
select sysdate,last_day(sysdate) from dual;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zggLYPO7-1662017013415)(C:\Users\PC\AppData\Local\Temp\1662002402033.png)]
三、数据类型转换函数
1、to_date (字符串转化为日期型)
-
to_date(日期)
-
select ‘21-2月-2022’,to_date(‘21-2月-2022’) from dual;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MfreJeM7-1662017013416)(C:\Users\PC\AppData\Local\Temp\1662002803576.png)]
2、to_char
-
to_char(日期,‘格式’)
-
将日期类型或者数字类型按一定的格式转化为字符串类型
-
常用格式
- year:英文年份
- month: 英文月份
- day : 星期几的英文单词
- yyyy:四位数的年份
- mm:两位数的月份
- dd:一个月中的第几天
- hh:24小时
- mi:分钟
- ss:秒
- am/pm 上午/下午
- d :一个星期数字表示星期天为1,星期六为7
- ddd : 一年中的第几天
- ddsp :英文拼写的天 five 5号
- ddspth:英文拼写的第几天
- DY : 星期几
-
select to_char(to_date(‘27-5月-2022’),’yyyy-mm-dd‘) fromdual;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8wigHN5H-1662017013418)(C:\Users\PC\AppData\Local\Temp\1662003553888.png)]
-
select sysdate,to_char(sysdate,‘yyyy-mm-dd’) from dual;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7xM3zoN9-1662017013418)(C:\Users\PC\AppData\Local\Temp\1662003641559.png)]
-
select sysdate,to_char(sysdate,‘yyyy-mm-dd-DY’) from dual;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mdPjLpNd-1662017013419)(C:\Users\PC\AppData\Local\Temp\1662007356579.png)]
3、round 和 trunc
-
round对日期进行四舍五入操作
-
trunc对日期进行截取操作
-
select round(to_date(‘16-2月-2022’),‘month’)from dual;
-
其中,本语句的意思是将day的日期变成月份
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cfVIdKRU-1662017013420)(C:\Users\PC\AppData\Local\Temp\1662007881352.png)]
-
select round(to_date(‘16-7月-2022’),‘year’)from dual;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-agyeNEeV-1662017013421)(C:\Users\PC\AppData\Local\Temp\1662008126957.png)]
-
select trunc (to_date(‘16-7月-2022’),‘year’)from dual;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EhPrmYTU-1662017013423)(C:\Users\PC\AppData\Local\Temp\1662008226795.png)]
四、常用的数字格式
1、0
- 0代表如果存在数字则显示数字,不存在则显示0.即占位符
-
2、9
- 9代表如果存在数字则显示数字,不存在则显示空格
3、FM
-
FM:代表如果是因为9带来的空格则删除
-
select total,to_char(total,‘FM$999,999’) from s_ord;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uXYNxSz5-1662017013424)(C:\Users\PC\AppData\Local\Temp\1662014639315.png)]
4、L
-
本地货币符号
-
select total,to_char(total,‘FML000,999,999.00’) from s_ord;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vyyAlbSi-1662017013425)(C:\Users\PC\AppData\Local\Temp\1662014802437.png)]
5、$
- $:美元符号
6、to_number
-
将字符串类型转化为数字类型
-
select to_number(‘123.456’) from dual;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sDIbCruX-1662017013426)(C:\Users\PC\AppData\Local\Temp\1662015738477.png)]
-
十六进制转化为十进制用to_number
-
select to_number(‘a’,‘xxx’)from dual;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XpLXtp2d-1662017013427)(C:\Users\PC\AppData\Local\Temp\1662015933163.png)]
-
xxx,如果转换的数字较大,则多用几个
-
十六进制转化为十进制用to_char
-
select to_char(14,‘xxx’)from dual;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nBKTPxNu-1662017013427)(C:\Users\PC\AppData\Local\Temp\1662016023071.png)]
习题
1、找出S_EMP表中,START_DATE是91年的日期,并且以2008.08.17此种格式输出
-
select to_char(start_date,‘yyyy.mm.dd’) from s_emp where start_date like ‘%91’;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MF7AW196-1662017013428)(C:\Users\PC\AppData\Local\Temp\1662016592709.png)]
2、习题10:在S_ORD表中,查询出SALES_REP_ID为11的total值,该值以¥开头,有10位有效位数,不足的位数以0填充
-
select to_char(total,‘FML00,000,000.00’)from s_ord where sales_rep_id =11;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eQA9iqH3-1662017013429)(C:\Users\PC\AppData\Local\Temp\1662016935416.png)]
196-1662017013428)]
2、习题10:在S_ORD表中,查询出SALES_REP_ID为11的total值,该值以¥开头,有10位有效位数,不足的位数以0填充
-
select to_char(total,‘FML00,000,000.00’)from s_ord where sales_rep_id =11;
[外链图片转存中…(img-eQA9iqH3-1662017013429)]