Конвертировать и округлить (секунды в минуты) с помощью SQL - PullRequest
4 голосов
/ 18 декабря 2011

У меня есть поле на моей таблице, которое представляет секунды, я хочу преобразовать в минуты

Select (100/60) as Minute from MyTable
-> 1.66

Как я могу получить 1 минуту и ​​40 секунд 00:01:40, а затем округлить до 00:02:00, и если00:01:23 округлить до 00:01:30

Используя Mysql.

Ответы [ 4 ]

6 голосов
/ 18 декабря 2011

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

  • ((секунд + 15) DIV 30) * 30
  • (секунд + 15) - (секунд + 15)% 30

Последнее длиннее, но с точки зрения времени процессора должно быть быстрее.

1011 *
*

Затем вы можете использовать SEC_TO_TIME(seconds), чтобы получить формат hh:mm:ss, и взять правильные 5 символов, если вам действительно нужно hh:mm.

1020 *
*

Если вы хотите избежать SEC_TO_TIME(seconds), вы можете создать строку самостоятельно.

  • минут = всего_секунд DIV 60
  • секунд = всего_секунд% 60

  • конечная строка = LPAD(minutes, 2, '0') | ':' | LPAD(seconds, 2, '0')

3 голосов
/ 18 декабря 2011

Я не уверен, как round это, но вы можете конвертировать seconds в time т.е. hh:mm:ss формат используя SEC_TO_TIME(totaltime)

0 голосов
/ 18 декабря 2011

Желаемый результат:

A = 30
B = 60
C = 90
D = 120

select 

(25 + 15)-(25 + 15) % 30 as A,

(32 + 15)-(32 + 15) % 30 as B,

(90 + 15)-(90 + 15) % 30 as C,

(100 + 15)-(100 + 15) % 30 as D

Результат:

A = 30

B = 30

C = 90

D = 90

Я пытаюсь с этим:

select 

30* ceil(30/30) as A,

30* ceil(32/30) as B,

30* ceil(90/30) as C,

30* ceil(100/30) as D

Результат:

A = 30

B = 60

C = 90

D = 120

Спасибо за вашу помощь!

0 голосов
/ 18 декабря 2011

Вы можете просто написать свою собственную функцию http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html

Но я бы предпочел сделать это на языке программирования (PHP, Python, C), а не на стороне базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...