2015-11-09 5 views
0

Я использую этот SQL-запрос:SQL время округления до ближайших 30 минут

SELECT ROUND((hours*60+minutes)/30) from table 

, который вычисляет число 30 минут сегментов

, если у меня есть 2 часа, 10 минут это возвращается 30_minute_segments = '4' однако я бы как показано 5, так как 10 minutes должен считаться 30 минут.

как я могу это сделать?

ответ

5

Я думаю, вы хотите использовать CEIL вместо ROUND. CEIL будет округлен.

SELECT CEIL((hours*60+minutes)/30) from table 

Я только понял, что предположил, что вы используете Oracle. Но вы не указали свою базу данных.

Для SQL Server эквивалентная функция: CEILING(). Большинство баз данных имеют нечто подобное. (Обратите внимание: если вы используете SQL Server, помните комментарий @ Chizzle ниже.)

+0

все в порядке, CEIL все равно работал :) спасибо – charlie

+0

Почему heck делает 'SELECT CEILING ((2 * 60 + 10)/30)' все еще возвращать 4 в SQL Server ?? Это из-за целочисленного типа данных? – Chizzle

+0

@ Чиже, я не уверен. Звучит не так, но у меня нет экземпляра SQL Server передо мной. Возможно, вы захотите задать новый вопрос, потому что этот поток сосредоточен только на проблеме Чарли. – Marc

Смежные вопросы