Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Базы данных MySQL

  Все выпуски  

RusFAQ.ru: Базы данных SQL


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Базы данных SQL

Выпуск № 133
от 13.08.2006, 11:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 323, Экспертов: 43
В номере:Вопросов: 1, Ответов: 2


Вопрос № 51414: Здравствуйте все еще раз!!! В дополнение к вопросу №51367: В БД Акцесс имеется поле Дата/Время в формате hh:mm Вопрос: Как мне просуммировать это поле SQL-запросом, чтобы результат остался в формате hh:mm, причем чтобы он был более 2...

Вопрос № 51.414
Здравствуйте все еще раз!!!
В дополнение к вопросу №51367:

В БД Акцесс имеется поле Дата/Время в формате hh:mm
Вопрос: Как мне просуммировать это поле SQL-запросом, чтобы результат остался в формате hh:mm, причем чтобы он был более 24 часов, или как считать в переменную каждое значение из этого поля, и конвертировать его согласно формуле: t:=hh+(mm/60), t:real;
Отправлен: 07.08.2006, 16:14
Вопрос задал: Герасименко Алексей Анатольевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Филатов Евгений Геннадьевич
Здравствуйте, Герасименко Алексей Анатольевич/Geer!

В таблице Tab1 имеется поле Tim формата Дата/время - краткий формат времени ( 17:34 ).
Заполняем поле значениями и выполняем запрос:
select ( sum ( hour ( tim ) ) + int ( sum ( minute ( tim ) ) / 60 ) ) as chasov , ( sum ( minute ( tim ) ) - int ( sum ( minute ( tim ) ) / 60 ) * 60 ) as minut from tab1

В результате выведутся два поля, в которых будет общее количество часов ( в т.ч. и с учетом сумм минут / 60 ) и минут ( от 0 до 59 ) .

Формат hh:mm данный ответ не поддерживает ( выбросит ошибку ).

Можно изменить запрос:
select ( trim ( str ( sum ( hour ( tim ) ) + int ( sum ( minute ( tim ) ) / 60 ) ) ) ) + ':' + trim ( str ( sum ( minute ( tim ) ) - int ( sum ( minute ( tim ) ) / 60 ) * 60 ) ) as vrem from tab1

Можно минуты выразить дробью, но мне кажется в виде 142:32 красивее и нагляднее.

Можно изменить запрос:
select ( trim ( str ( sum ( hour ( tim ) ) + int ( sum ( minute ( tim ) ) / 60 ) ) ) ) + 'час' + trim ( str ( sum ( minute ( tim ) ) - int ( sum ( minute ( tim ) ) / 60 ) * 60 ) + 'мин' ) as vrem from tab1

Тогда ответ будет в виде 142час32мин.

С уважением.
Ответ отправил: Филатов Евгений Геннадьевич (статус: 4-ый класс)
Ответ отправлен: 07.08.2006, 16:57
Оценка за ответ: 5

Отвечает: Александр Шевченко
Здравствуйте, Герасименко Алексей Анатольевич/Geer!
1. select rtrim(convert(char, (sum(datepart(hour,dat))+ sum(datepart(minute, dat))/60))) + ':' + rtrim(convert(char, (sum(datepart(minute, dat)) - (sum(datepart(minute, dat))/60) * 60))) as hours from dates
2. select datepart(hour,dat)+datepart(minute, dat)/60.0 as hours from dates
---------
Вместо внутренней почты лучше стучитесь в аську
Ответ отправил: Александр Шевченко (статус: Студент)
Ответ отправлен: 08.08.2006, 11:57


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.35 от 27.07.2006
Яндекс Rambler's Top100

В избранное