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月来计算月中剩余天数。 

MONTHS_BETWEEN (x, y)用于计算x和y之间有几个月。如果x在日历中比y早,那么MONTHS_BETWEEN()就返回一个负数。
当x 和 y 之间的月份之差不是整月的时候,可以采用小数表示。
months_between(date1, date2),必须注意的是,date1与date2都为Date类型,不然会出现错误。须用to_date(‘’,‘‘) 来转换为日期格式,才能参加计算。

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怎么截取小数点前的数字,但是不要四舍五入的主要内容,如果未能解决你的问题,请参考以下文章

Oracle33ROUND 截取 四舍五入

小数点前面百位数进行四舍五入如何编程汉语编程巧妙处理

SQL中decimal和numeric为啥会自动四舍五入啊?我是想保留有小数的怎么办?

【MySQL】保留2位小数相关函数

Oracle 常用的单行函数

sql 保留2位小数