|
запрос время между двумя значениями | ☑ | ||
---|---|---|---|---|
0
jenny_tea
24.09.12
✎
12:30
|
Как в запросе в условии поставить что ВремяСправочника между ВремяНач и ВремяКон.
т.е. у меня есть параметр справочника в котором фиксируется время, и на вход подаются ДатаНач и ДатаКон. На выходе условия мне нужно получить как времясправочника между время(Датанач) и время(ДатаКон) Например: в нашем справочнике задается время 10:00:00, если на вход подать ДатаНач 01/09/2012 09:55:00 а ДатаКон 31/08/2012 10:05:00 То выдалось бы Истина а если ДатаНач 31/08/2012 10:05:00 а ДатаКон 01/09/2012 10:10:00 То выдалось бы ложь |
|||
1
Ant1773
24.09.12
✎
12:33
|
Э...
(ДатаСправочник > ДатаНач и ДатаСправочник < ДатаКон) ? |
|||
2
Нуф-Нуф
24.09.12
✎
12:33
|
разность дат
|
|||
3
HouseCD
24.09.12
✎
12:34
|
Можно использовать "МЕЖДУ", можно "РАЗНОСТЬДАТ"
|
|||
4
Ненавижу 1С
гуру
24.09.12
✎
12:34
|
МЕЖДУ
|
|||
5
jenny_tea
24.09.12
✎
12:35
|
меня именно время интересует. т.е. мне по сути либо надо в запросе привести все даты к одному дню и тогда разност лат и все такое либо как-то еще
|
|||
6
jenny_tea
24.09.12
✎
12:35
|
посмотрите пример между выдаст ложь
|
|||
7
jump if overflow
24.09.12
✎
12:38
|
справочник с самим собой соединяешь
по створой таблице фильтруешь, там где NULL бдет Ложь |
|||
8
HouseCD
24.09.12
✎
12:39
|
Функция РАЗНОСТЬДАТ
Функция предназначена для получения разницы между двумя датами. Первый параметр — выражение типа ДАТА; Второй параметр — выражение типа ДАТА; Третий параметр – тип разности, одно из: СЕКУНДА, МИНУТа, ЧАС, ДЕНЬ, МЕСЯЦ, КВАРТАЛ, ГОД. Примеры: ВЫБРАТЬ РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2002, 10, 12, 10, 15, 34), ДАТАВРЕМЯ(2002, 10, 14, 9, 18, 06), ДЕНЬ) Результат: Поле1 2 ВЫБРАТЬ РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2002, 10, 12), (ДАТАВРЕМЯ(2002, 11, 03), МЕСЯЦ) Результат: Поле1 1 Внимание! Функция рассчитывает календарную разницу между двумя датами, поэтому ее нельзя использовать в местах, где необходимо рассчитать количество банковских или рабочих дней между двумя датами. |
|||
9
jenny_tea
24.09.12
✎
12:55
|
понятно что есть функция РазностьДат, есть функция ДобавитьКДате, есть НачалоПериода, как это привести к получению условия
|
|||
10
Rovan
гуру
24.09.12
✎
12:57
|
(9) а чем (1) не нравиться ?
|
|||
11
jenny_tea
24.09.12
✎
13:00
|
потому что даты не обязаны быть между
|
|||
12
Ant1773
24.09.12
✎
13:00
|
(6) Т.е. в одном случае есть датавремя, в другом только время?
Так нужно обрезать даты и оставить только время. ДОБАВИТЬКДАТЕ(ДатаНачала,РазностьДат(ПустаяДата,ДатаНачала,День),День) |
|||
13
jenny_tea
24.09.12
✎
13:05
|
ДОБАВИТЬКДАТЕ(&ДатаНач, ДЕНЬ, РАЗНОСТЬДАТ(ДАТАВРЕМЯ(1, 1, 1), &ДатаНач, ДЕНЬ)) сделала такое поле, при вызове запроса выдает неверные параметры
|
|||
14
jenny_tea
24.09.12
✎
13:11
|
почему разность кстати по дню а не по секунде. я до этого пыталась сделать так: ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ДатаНач, ДЕНЬ), СЕКУНДА, РАЗНОСТЬДАТ(&ДатаНач, НАЧАЛОПЕРИОДА(&ДатаНач, ДЕНЬ), СЕКУНДА)) КАК ПолеНач,
ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ДатаНач, ДЕНЬ), СЕКУНДА, РАЗНОСТЬДАТ(Графики.Время, НАЧАЛОПЕРИОДА(Графики.Время, ДЕНЬ), СЕКУНДА)) КАК Поле1, ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ДатаНач, ДЕНЬ), СЕКУНДА, РАЗНОСТЬДАТ(&ДатаКон, НАЧАЛОПЕРИОДА(&ДатаКон, ДЕНЬ), СЕКУНДА)) КАК полеКон но почему то выдавал немного не то что я ожидала: при графики.время = 10:00:00, датанач = 24/09/2012 09:55:00 а датакон 24/09/2012 10:05:00 выдает ПолеНач = 23/09/2012 14:05:00, Поле1=23/09/2012 14:00:00 а полеКон=23/09/2012 13:55:00 |
|||
15
jenny_tea
24.09.12
✎
13:12
|
почему-то надо перед разность дат ставить - и тогда получилось
|
|||
16
jenny_tea
24.09.12
✎
13:14
|
итого чтобы привести дату время к одной дате и смотреть только в разрезе времени надо написать ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ДатаПриведения, ДЕНЬ), СЕКУНДА, -РАЗНОСТЬДАТ(ДатаНужная, НАЧАЛОПЕРИОДА(ДатаНужная, ДЕНЬ), СЕКУНДА))
|
|||
17
jenny_tea
24.09.12
✎
13:14
|
если есть более простой способ напишите пожалуйста
|
|||
18
vmv
24.09.12
✎
13:17
|
работа со времеными рядами и вообще со временем в контексте какого-либо алглоритма в 1С - это полет фантазии, ибо разработчики положили болт на функционал работы со временем, который есть в современных языках программирования
|
|||
19
vmv
24.09.12
✎
13:22
|
(16) чего-то вы недогововариваете. подозреваю, что в запрос в качестве сравнения "уходит" только время, т.е. даты
Дата(1, 1, 1, 10, 5, 0) и т.д. если в запрос передавать ДатуИВремя, то вопрос в (0) вообще не возникает. А вот если на форме/в настройках/параметрах нужно показывать только время, то формат поможет |
|||
20
jenny_tea
24.09.12
✎
13:39
|
вопрос в том, что мне в запросе в одном месте надо сравнивать дату, а в другом время
|
|||
21
НЕА123
24.09.12
✎
13:39
|
ЧАС(ДД1)>ЧАС(ДД2) ИЛИ (ЧАС(ДД1)=ЧАС(ДД2) И Минута(ДД1)>Минута(ДД2))
|
|||
22
jenny_tea
24.09.12
✎
13:50
|
и сравнивать не между а по отдельности?
|
|||
23
jenny_tea
24.09.12
✎
13:50
|
ну вариант
|
|||
24
vmv
24.09.12
✎
13:55
|
я совсем перестал понимать женскую логику, что мешает получать(все равно где: код, запрос, фантазии) ДатаИВремя и сравнивать?
|
|||
25
jenny_tea
24.09.12
✎
13:58
|
ДатаВремя() не берется датавремя(год(дата1),месяц(дата1) и тп)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |