在MySQL中,我想将数字舍入到最接近的十位。
e.g。 812 - > 810,但也是819 - > 810
使用ROUND函数不起作用。
答案 0 :(得分:7)
您可以使用TRUNCATE函数,如下所示:
SELECT TRUNCATE(819, -1);
SELECT TRUNCATE(812, -1);
Result:
810
答案 1 :(得分:3)
我将除以10,做一个floor()然后乘以10得到正确的int值。那么在MySQL中就是这样的:
SELECT FLOOR(Myattribute / 10) * 10;
答案 2 :(得分:3)
您仍然可以使用舍入功能,但将小数位指定为负数:
SELECT ROUND(812, -1)
答案 3 :(得分:0)
您可以使用"integer division" operator,DIV
:
SELECT 812 DIV 10 * 10;
虽然TRUNCATE()
对于“舍入”为10、100等是更好的选择,但DIV
也可以用于“舍入”为其他值,例如分钟:
SELECT NOW(), FROM_UNIXTIME(UNIX_TIMESTAMP() DIV 60 * 60);
+---------------------+---------------------------------------------+
| NOW() | FROM_UNIXTIME(UNIX_TIMESTAMP() DIV 60 * 60) |
+---------------------+---------------------------------------------+
| 2020-03-17 13:51:35 | 2020-03-17 13:51:00 |
+---------------------+---------------------------------------------+