SQL怎么截取小数点前的数字,但是不要四舍五入
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL怎么截取小数点前的数字,但是不要四舍五入相关的知识,希望对你有一定的参考价值。
其实,你说的截取小数点前的数字,也就是将小数转换为整数。
可以使用函数【cast】进行转换
示例:将1234.9678转为整数
select cast(1234.9678 as int)输出结果为:1234
参考技术A round(3.45) >>>>>3.5 4舍5入ceil(3.45)>>>>>>4 最接近的较大整数(ceiling天花板的意思)
floor(3.45)>>>>>>3 最接近的较小整数(floor地板的意思) 参考技术B trunc(125.815) would return 125
trunc(125.815, 0) would return 125
trunc(125.815, 1) would return 125.8
trunc(125.815, 2) would return 125.81
trunc(125.815, 3) would return 125.815
trunc(-125.815, 2) would return -125.81
trunc(125.815, -1) would return 120
trunc(125.815, -2) would return 100
trunc(125.815, -3) would return 0 参考技术C substring(ID,1,(charindex('.',ID)-1)
从ID第一位开始截取 到 ‘.’前面的值 参考技术D round(数值,位数,截取1如四射五入默认0或不填)
oracle学习第三天常用函数
1) trunc函数,用于截断数字,
截断数字,用法为:trunc(n1,n2),n1表示要被截断的数字,n2表示要截断到那位,但是不会进行四舍五入。
n2还可以表示负数,表示截断到小数点前,意思就是小数点后面的都不要了,最后结果是以0结尾的整数。
当trunc(n1,n2)当n2为负数时,-1表示个位为0,-2表示个位和十位都为0,后面一次类推。
SQL> select trunc(13.1) from dual;
TRUNC(13.1)
-----------
13
SQL> select trunc(13.23,2)from dual;
TRUNC(13.23,2)
--------------
13.23
SQL> select trunc(13.23,1)from dual;
TRUNC(13.23,1)
--------------
13.2
SQL> select trunc(13.23432,3)from dual;
TRUNC(13.23432,3)
-----------------
13.234
SQL> select trunc(13.2,-1)from dual;
TRUNC(13.2,-1)
--------------
10
SQL> select trunc(119.2,-1)from dual;
TRUNC(119.2,-1)
---------------
110
SQL> select trunc(120.2,-1)from dual;
TRUNC(120.2,-1)
---------------
120
SQL> select trunc(120.2,-2)from dual;
TRUNC(120.2,-2)
---------------
100
SQL> select trunc(1220.11,-3)from dual;
TRUNC(1220.11,-3)
-----------------
1000
SQL> select trunc(12230.11,-4)from dual;
TRUNC(12230.11,-4)
------------------
10000
2)trunc用于截断日期
SQL> select trunc(sysdate)from dual;//返回当前日期
TRUNC(SYSDATE)
--------------
2019/05/21
SQL> select trunc(sysdate,‘mm‘)from dual;//返回当前月份的第一天
TRUNC(SYSDATE,‘MM‘)
-------------------
2019/05/01
SQL> select trunc(sysdate,‘yyyy‘)from dual;//返回当前年份的第一天
TRUNC(SYSDATE,‘YYYY‘)
---------------------
2019/01/01
SQL> select trunc(sysdate,‘dd‘)from dual;//返回当前日期
TRUNC(SYSDATE,‘DD‘)
-------------------
2019/05/21
SQL> select trunc(sysdate,‘d‘)from dual;//返回当前星期的第一天(为星期天,工作的第一天为星期一)
TRUNC(SYSDATE,‘D‘)
------------------
2019/05/19
SQL> select trunc(sysdate,‘hh‘)from dual;//返回当前小时
TRUNC(SYSDATE,‘HH‘)
-------------------
2019/05/21 15:00:00
SQL> select trunc(sysdate,‘mi‘)from dual;//返回当前时间的分钟,没有秒的精确,只有毫秒。
TRUNC(SYSDATE,‘MI‘)
-------------------
2019/05/21 15:20:00
3)add_months(时间,数字)表示可以得到某一时间之前或之后n个月的时间;
SQL> select add_months(sysdate,1)from dual;//获取当前时间一个月之后的时间
ADD_MONTHS(SYSDATE,1)
---------------------
2019/06/21 15:37:02
SQL> select add_months(sysdate,6)from dual;//获取到当前时间半年之后的时间
ADD_MONTHS(SYSDATE,6)
---------------------
2019/11/21 15:37:20
4)months_between函数返回两个日期之间的月份数。如果两个日期月份内天数相同,或者都是某个月的最后一天,返回一个整数,否则,返回数值带小数,以每天1/31月来计算月中剩余天数。
SQL> select months_between(sysdate,‘10-5月-20‘)from dual;
MONTHS_BETWEEN(SYSDATE,‘10-5月-20‘)
----------------------------------
-11.6239557198327
select months_between(‘10-5月-20‘,sysdate)from dual;
MONTHS_BETWEEN(‘10-5月-20‘,SYSDATE)
----------------------------------
11.6239329450418
SQL> select months_between(‘21-5月-20‘,sysdate)from dual;
MONTHS_BETWEEN(‘21-5月-20‘,SYSDATE)
----------------------------------
12
以上是关于SQL怎么截取小数点前的数字,但是不要四舍五入的主要内容,如果未能解决你的问题,请参考以下文章