![]() |
![]() |
![]() |
|
как вычислить в запросе часы и минуты | ☑ | ||
---|---|---|---|---|
0
ksergey
04.12.08
✎
13:16
|
Привет
Есть значение КвоМинут. Как в запросе можно корректно разобрать на Часы-Минуты ? |
|||
1
zbv
04.12.08
✎
13:17
|
"*" "-"
|
|||
2
ZanderZ
04.12.08
✎
13:17
|
/60
|
|||
3
ksergey
04.12.08
✎
13:22
|
блин, умники...
как получить ЦЕЛУЮ часть и ОСТАТОК от деления для КвоМинут/60? |
|||
4
НЕА123
04.12.08
✎
13:24
|
(3) не выражайся здесь. варажайся в запросе.
|
|||
5
ksergey
04.12.08
✎
13:24
|
(2) /60 -это мона получить просто КвоЧасов с выражением минут как десятичная часть часа, а мне нужно 320минут = 5часов 20минут
|
|||
6
zag2art
04.12.08
✎
13:24
|
ВЫРАЗИТЬ - обрати внимание на округление
|
|||
7
ksergey
04.12.08
✎
13:28
|
(6) делал так
ВЫРАЗИТЬ (КвоМинут/60 КАК ЧИСЛО(8,0)) КАК Часы возвращает для 3.5 как 4.0 |
|||
8
ksergey
04.12.08
✎
13:28
|
(6) покажи пример как сделать чтоб получить целую часть деления ?
|
|||
9
zag2art
04.12.08
✎
13:29
|
КвоМинут/60-0.5 - я же говорю обрати внимание на округление
|
|||
10
ksergey
04.12.08
✎
15:31
|
(9) кстати, твой вар-т кривой, т.к. из-за -0,5 возможны ситуации, когда не правильно высчитывается ...
непонятно, а где пропали все наши маститые коллеги ? |
|||
11
Широкий
04.12.08
✎
15:34
|
(10) нормальный вариант .. надо просто смотреть число отрицательное или положительное
|
|||
12
ksergey
04.12.08
✎
15:36
|
нашел неуклюжее, но решение
ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1,1,1), МИНУТА, КвоМинут) КАК ЧасыМинуты, но возвращает эта констр-ция в виде 01.01.0001 3:20:00 и от далее - не могу придумать как срезать первую часть даты 01.01.0001 |
|||
13
ksergey
04.12.08
✎
15:38
|
пробовал
ПОДСТРОКА (ПРЕДСТАВЛЕНИЕ (ДОБАВИТЬКДАТЕ ( выводит ошибку - видать слишком мудрено для 8-ки :( |
|||
14
Ц_У
04.12.08
✎
15:42
|
(12)
Используй разность дат |
|||
15
ksergey
04.12.08
✎
15:45
|
(12) не понял, что даст мне разность дат?
у меня КвоМинут всё равно не превышает 12часов * 60 |
|||
16
НЕА123
04.12.08
✎
15:52
|
ЧАС(<Дата>) МИНУТА(<Дата>)
|
|||
17
НЕА123
04.12.08
✎
15:54
|
(10) в мсскул все правильно.
|
|||
18
ksergey
04.12.08
✎
16:11
|
(17) согласен. в MSSQL всё правильно - там и отстаток от деления есть, и целая часть числа можно получить...
а в 8-ке приходится заниматься извращениями :) |
|||
19
НЕА123
04.12.08
✎
16:13
|
(18) и в 1С с округлением, если база мсскул тоже все нормально.
|
|||
20
Ц_У
04.12.08
✎
16:20
|
Функция ЧасовВМин(Минуты)
Запрос = новый Запрос(); Запрос.Текст = "ВЫБРАТЬ | ВложенныйЗапрос.Мин, | ВложенныйЗапрос.Час |ИЗ | (ВЫБРАТЬ | ЧАС(ВложенныйЗапрос.Поле1) КАК Час, | МИНУТА(ВложенныйЗапрос.Поле1) КАК Мин | ИЗ | (ВЫБРАТЬ | ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), МИНУТА, &КвоМинут) КАК Поле1) КАК ВложенныйЗапрос) КАК ВложенныйЗапрос"; Запрос.УстановитьПараметр("КвоМинут",Минуты); Результат = Запрос.Выполнить().Выгрузить(); Возврат Строка(Результат[0].Час)+":"+Строка(Результат[0].Мин); КонецФункции |
|||
21
Ц_У
04.12.08
✎
16:24
|
(20)ВложенныйЗапрос.Час + ВложенныйЗапрос.Мин/100
будет 2,05 = 2 часа 5 мин )) |
|||
22
Serg_1960
04.12.08
✎
16:26
|
(0) Сорри, а зачем?
|
|||
23
ksergey
04.12.08
✎
16:27
|
(20) -Садить, ставлю "5"
(в хозяйстве пригодится :-) ) |
|||
24
ksergey
04.12.08
✎
16:28
|
(ТЕЗКЕ-60) в регистре храню время в МИНУТАХ
в отчет хочу вывести как положено ЧЧ:ММ а не породию КвоМинут/60 |
|||
25
Ц_У
04.12.08
✎
16:38
|
Если макет фиксированный тогда: шаблон [ВложенныйЗапрос.Час]:[ВложенныйЗапрос.Мин]
|
|||
26
ksergey
04.12.08
✎
16:40
|
(25) ...в макете можно просто указать ФОРМАТ "ДТ"
|
|||
27
ksergey
04.12.08
✎
16:40
|
секунды клиенту сильно не мешают
|
|||
28
ksergey
04.12.08
✎
16:41
|
спасибо всем откликнувшися
как говрицца - в споре рождаеца ИСТИНА |
|||
29
Serg_1960
04.12.08
✎
16:51
|
Угу. Истина "банальная": нет в SQL "от 1С" преобразование типов :(
|
|||
30
Serg_1960
04.12.08
✎
17:18
|
Интересно, что скажут коллеги, если увидят вот такое "преобразование" в строку времени из даты :))
Запрос = Новый Запрос("ВЫБРАТЬ ПОДСТРОКА(""00010203040506070809101112131415161718192021222324"", ЧАС(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), МИНУТА, &КолМинут)) * 2 + 1, 2) + "":"" + ПОДСТРОКА(""00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960"", МИНУТА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), МИНУТА, &КолМинут)) * 2 + 1, 2) КАК Время"); Запрос.УстановитьПараметр("КолМинут", 320); Выборка = Запрос.Выполнить().Выбрать(); Выборка.Следующий(); Сообщить(Выборка.Время); |
|||
31
НЕА123
04.12.08
✎
18:08
|
(30) красиво!
|
|||
32
Serg_1960
04.12.08
✎
18:11
|
(31) Спасибо. Да! Есть в этом алгоритме "своеобразная" красота :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |