Msyql ROUNDING для ПЛОСКОЙ СТАВКИ

Нужна помощь с округлением значений, я знаю, что ROUND() существует, но это не совсем то, что мне нужно.

Итак, я рассчитываю тарифы на звонки за минуту, при которых при фиксированной ставке любой звонок продолжительностью более 60 секунд будет взиматься плата за следующую минуту.

Мой запрос идет SEC_TO_TIME (billedsec), чтобы получить минутный эквивалент.

У меня 2 проблемы:

  1. Как округлить до полной минуты для значений, которые превышают минуту, скажем, если 1 минута и 15 секунд (00:01:15) должны быть 2 минутами или 13 секунд должны быть полной минутой.

  2. Как рассчитать формат TIME для int или float, чтобы получить фактическую скорость например 00:01:00*rate? Это прямолинейный подход?

Спасибо, парни

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
0
19
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ты можешь использовать

FLOOR((billedsec+59)/60)

чтобы округлить время до следующей минуты. 13 секунд перейдут к 72/60 = 1 минуте, 60 секунд перейдут к 119/60 = 1 минуте, 61 секунда перейдет к 120/60 = 2 минутам, 75 секунд перейдет к 134/60 = 2 минутам и т. д.

БЛАГОДАРЮ ВАС! Это сработало! МОЙ БОГ! ты сделал мою жизнь намного проще. ВВЕРХ ВВЕРХ ВВЕРХ!

DonX 21.05.2018 08:56

Не волнуйтесь. Рад помочь.

Nick 21.05.2018 08:57

Или просто CEIL(billedsec/60) @Nick?

Michael - sqlbot 22.05.2018 02:42

@ Michael-sqlbot Да, но ... Иногда я сталкивался с ситуациями, когда ограничения точности с плавающей запятой означают, что что-то вроде 60/60 может быть дробно больше единицы, а затем CEIL округляет это до 2. Использование FLOOR таким образом гарантировано безопасный.

Nick 22.05.2018 02:57

Другие вопросы по теме