Имя: Пароль:
1C
 
1c8 - запросы - операции над датами
0 Berds
 
15.10.04
15:40
Подскажите пожалста, как в 1С8.0 в поле запроса получить разность двух дат к примеру в днях, секунды бы думаю тоже подошли
1 Волшебник
 
15.10.04
15:45
(Дата1 - Дата2) - разве не работает?
Результат будет в секундах.
Чтобы получить результат в сутках, подели на 86400 (секунд в сутках).
2 Berds
 
18.10.04
08:00
К примеру выражение:
ВЫБРАТЬ (ДатаВремя(2004,10,20) - ДатаВремя(2004,10,10))

не работает и возвращает ошибку: Неверные параметры "-"
3 Shaytan
 
18.10.04
09:26
А что ты хочешь выбрать?
4 Волшебник
 
18.10.04
10:16
см. функцию РАЗНОСТЬДАТ
5 Волшебник
 
18.10.04
10:50
Синтаксис:
РАЗНОСТЬДАТ(<Дата1>, <Дата2>, <Тип>)

Пример:

Выбрать РАЗНОСТЬДАТ(Период, &РабДата, Секунда)
ИЗ РегистрСведений.КурсыВалют

вместо "Секунда" может быть Минута, Час, День, Месяц, Год

Есть также функция ДОБАВИТЬКДАТЕ
ДОБАВИТЬКДАТЕ(<Дата>, <Тип>, <Количество>)

Пример:

Выбрать ДОБАВИТЬКДАТЕ(Период, Месяц, 2)
ИЗ РегистрСведений.КурсыВалют
6 kabazЯba
 
19.10.04
11:33
(5) Очень интересно. Чего-то я спрашивал "Синтаксис-помощьник", он ничего не знает про РАЗНОСТЬДАТ и ДОБАВИТЬКДАТЕ.
7 Archon
 
19.10.04
12:07
Да, почему-то не могу использовать. Или это только в запросе?
РАЗНОСТЬДАТ(РабочаяДата,ТекущаяДата()) = Ошибка в выражении
8 Волшебник
 
19.10.04
12:26
(6) появилось в новом релизе
(7) только в языке запросов
9 kabazЯba
 
19.10.04
12:36
(8) В каком новом? У меня ща 8.0.8.7. Новее есть чтоли?
10 kabazЯba
 
19.10.04
12:40
(8) Кстати. Как быть когда надо НЕ В ЗАПРОСЕ рассчитать разницу между датами в минутах, часах, днях, неделях, месяцах, кварталах, годах? Про секунды молчу, т.к. Дата1 - Дата2 = <разница в секундах>. Чёли самому писать???
11 Волшебник
 
19.10.04
20:57
(10) Создавай запрос, передавай даты в запрос как параметры, делай запрос к любой таблице, выполняй его и из результата запроса извлекай разницу дат.

А вообще можно секунды поделить на 60 и получишь минуты, поделить еще на 60 и получишь часы, еще на 24 и получишь сутки. А вот в месяцах сложнее...
12 Kyrales
 
20.01.05
06:53
А каким образом показать пустую дату в запросе?
Вот это не работает:

...
|ГДЕ
| (Спр.Дата = ""00010101"");
13 sunny
 
20.01.05
07:10
Спр.Дата=&ПараметрДата-здесь задается параметр
а значение ему устанавливается в
Запрос.УстановитьПараметр("ПараметрДата",'0001-01-01');
14 Shaytan
 
20.01.05
09:04
ГДЕ
| (Спр.Дата = '00010101');
15 PVasili
 
20.01.05
11:39
(12) см (14) и rtfm стр 1-13 строка чивр, заключенная в одинарные кавычки вида 'ГГГГММДДччммсс'
16 ezh
 
20.01.05
13:56
дурдом.
в запросе константы типа дата задаются только через ДатаВремя().
17 Shaytan
 
20.01.05
16:11
(16) - Прав:

Значения типа дата задаются с помощью ключевого слова ДАТАВРЕМЯ, после которого в скобках последовательно указы­ваются год, месяц, день, час, минута, секунда. Последние три ука­зывать необязательно.
18 Kyrales
 
20.01.05
17:44
В итоге у меня сработало вот так:
|ГДЕ
| (Спр.Дата = ДатаВремя(1,1,1));
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.