Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
160 / 159 / 13
Регистрация: 14.01.2010
Сообщений: 1,497
1

РАЗНОСТЬДАТ

15.01.2013, 15:01. Показов 1955. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет.
Как узнать в запросе разницу между датами в года.
Пробую РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2002, 10, 12),ДАТАВРЕМЯ(2003, 01, 03), ГОД), но получаю 1, хотя по логике года не прошло.
8.2
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2013, 15:01
Ответы с готовыми решениями:

РазностьДат из разных документов
Нужна помощь, есть документ прихода товара и документ списания этого товара, нужно получить кол-во...

Условие РАЗНОСТЬДАТ в запросе
Всем привет! Есть запрос. Так писать условие верно? Запрос = Новый Запрос; Запрос.Текст = ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
857 / 656 / 111
Регистрация: 01.11.2012
Сообщений: 2,411
15.01.2013, 15:25 2
Третий параметр содержит единицу измерения, в которой необходимо получить результат функции. В качестве третьего параметра можно использовать следующие значения: Секунда, Минута, Час, День, Месяц, Квартал, Год. При расчете результата функция игнорирует единицы измерения, которые меньше, чем указанная в данном параметре единица.
0
160 / 159 / 13
Регистрация: 14.01.2010
Сообщений: 1,497
15.01.2013, 20:19  [ТС] 3
И как же в запросе получить разницу в годах?
0
857 / 656 / 111
Регистрация: 01.11.2012
Сообщений: 2,411
15.01.2013, 20:47 4
Получить в месяцах и пересчитать в годы.
0
160 / 159 / 13
Регистрация: 14.01.2010
Сообщений: 1,497
17.01.2013, 17:18  [ТС] 5
Как это сделать в запросе?
А с месяцами не будет того же самого?
0
857 / 656 / 111
Регистрация: 01.11.2012
Сообщений: 2,411
17.01.2013, 17:25 6
Запрос поддерживает арифметические операции
0
160 / 159 / 13
Регистрация: 14.01.2010
Сообщений: 1,497
18.01.2013, 11:13  [ТС] 7
РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2002, 10, 12),ДАТАВРЕМЯ(2003, 01, 03), месяц)
В месяце тоже самое. Выводит 3.
0
857 / 656 / 111
Регистрация: 01.11.2012
Сообщений: 2,411
18.01.2013, 12:21 8
Ну правильно выводит. Разделите на 12 и получите в годах. Можно округлить до целого с помощью ВЫРАЗИТЬ, будет 0 лет.
0
160 / 159 / 13
Регистрация: 14.01.2010
Сообщений: 1,497
18.01.2013, 14:40  [ТС] 9
выбрать РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2002, 10, 12),ДАТАВРЕМЯ(2004, 10, 03), месяц)
выводит 24, а двух лет не прошло
0
857 / 656 / 111
Регистрация: 01.11.2012
Сообщений: 2,411
18.01.2013, 14:48 10
Прошло как раз 2 года ДАТАВРЕМЯ(Год, месяц, День) в месяцах, день игонрируется. Если нужно с точностью до дня, получай в днях и пересчитывай в года. И так вплоть до секунды
0
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
18.01.2013, 22:43 11
Пользуюсь и горя не знаю
1C
1
2
3
4
5
6
7
8
9
10
11
Функция КолМес(знач д1,знач д2)
д1=НачалоМесяца(д1);
д2=НачалоМесяца(д2);
Если д1=д2 Тогда Возврат 0;КонецЕсли;
Если д1>д2 Тогда д=д1;д1=д2;д2=д;КонецЕсли;
Для Ик=1 По 99999 Цикл
д1=ДобавитьМесяц(д1,1);
Если д1=д2 Тогда Возврат Ик;КонецЕсли;
КонецЦикла;
Возврат 0;
КонецФункции
0
857 / 656 / 111
Регистрация: 01.11.2012
Сообщений: 2,411
18.01.2013, 22:55 12
Так ТС'у видишь с точностью до дня надо узнать прошёл ли год или всё-таки чуть меньше
0
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
18.01.2013, 23:14 13
Дни и месяцы - разные категории. Разность в днях можно и так получить. А вот в месяцах - с учетом високосного года, разного количества дней - только так. Вот только не надо про года, а?
0
22 / 22 / 4
Регистрация: 17.10.2009
Сообщений: 281
18.01.2013, 23:19 14
Кривой вариант.

1C
1
пСекунд=Дата1-Дата2;  //можно делать Дата(год(дата1), месяц(дата1), день(дата1),0,0,0) и также для второй
а потом из секунд делаем что хотим. Хотя вариант очень кривой. Первый лучше
0
857 / 656 / 111
Регистрация: 01.11.2012
Сообщений: 2,411
19.01.2013, 12:35 15
Цитата Сообщение от duk337 Посмотреть сообщение
Дни и месяцы - разные категории. Разность в днях можно и так получить. А вот в месяцах - с учетом високосного года, разного количества дней - только так. Вот только не надо про года, а?
Суть написанного не уловил.

31.07 - 01.06 прошло 60 дней - 2 месяца, а по твоей проге получится 1

Разность в днях можно и так получить.
Ммм..Разность дат разве не в секундах?

Если серьёзно, то это
РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2002, 10, 12),ДАТАВРЕМЯ(2004, 10, 03), месяц)
и
1C
1
2
3
4
5
6
7
8
9
10
11
Функция КолМес(знач д1,знач д2)
д1=НачалоМесяца(д1);
д2=НачалоМесяца(д2);
Если д1=д2 Тогда Возврат 0;КонецЕсли;
Если д1>д2 Тогда д=д1;д1=д2;д2=д;КонецЕсли;
Для Ик=1 По 99999 Цикл
д1=ДобавитьМесяц(д1,1);
Если д1=д2 Тогда Возврат Ик;КонецЕсли;
КонецЦикла;
Возврат 0;
КонецФункции
Выдаст одинаковый результат, но ТС'а это почему-то не устраивает
0
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
19.01.2013, 16:05 16
Закусился, что ли? Разнесу по всем пунктам как нефиг делать.

Не по теме:

Не принято при подчинённых

0
857 / 656 / 111
Регистрация: 01.11.2012
Сообщений: 2,411
19.01.2013, 16:40 17
Я перестал тебя понимать, извини
0
19.01.2013, 16:40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru