MYSQL Round函
SELECT
25000000
, 25000000/100000000 -- 0.25
, ROUND(25000000/100000000,3) -- 0.25
, ROUND(25000000/10000000, 1) -- 2.5
, ROUND(0.25+1,1)-1 -- 0.3
, ROUND(1.25,1)-1 -- 0.3
, ROUND(0.26,1) -- 0.3
, ROUND(0.250006,0) -- 0
, ROUND(250006,1) -- 250006
,ROUND(21.5,0) -- 22
,ROUND(21.25,1) -- 21.3
数返回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果。可是当保留位跟着的即使是5,有可能进位,也有可能舍去,机会各50%。这样就会造成在应用程序中计算有误。下面这个函数能真正实现四舍五入功能,用以取代Round函数。
Public Function Round ToLarger(dblInputAsDouble,intDecimalsAsInteger) As Double
'执行Round()函数,有可能进位
'也有可能舍去
Dimstr Format String As String'格式化字符串’
如果是“0”,则返回“0”,否则进行适当的格式化:
If dblInput <>0 Then
strFormatString="#."&String(intDecimals,"#")
Round ToLarger=Format(dblInput,strFormatString)
Else
Round ToLarger=0
End If
End Function;
2.对日期的操作
1.对于年份按1--6月和7--12月四舍五入到最近的年份1月;
select round(to_date('2018-08-05','yyyy-mm-dd'),'yyyy') from dual;
2.对于月份按1--15日和16--30日四舍五入到最近的月份1日;
select round(to_date('2018-08-08','yyyy-mm-dd'),'month') from dual;
3.对于星期按周一--周三和周四--周日四舍五入到最近一周周日;
select round(to_date('2018-08-08','yyyy-mm-dd'),'day') from dual;
3.对于天按1--12点和13--24点四舍五入到最近一天零时;
select round(to_date('2018-08-05','yyyy-mm-dd'),'dd') from dual;