|
Разность дат в годах
crotnn, pv94384, Ненавижу 1С, spiller26, Terrixus, denk, Гипервизор, lEvGl, trk415e76, unenu, SleepyHead, Homer, Ильф, Волшебник, abfm, kostik79, phabeZ, Silgis, ndrv, Amfiaray, maxab72, vbus, maxar, 2S, Сергиус, ptiz, pasha_d, Lama12, shuhard, KJlag, dva1c, Вяйнемейнен, _Batoo, Greeen, программистище, AlexKimp, trad, Irbis, DemonShinji2, Доминошник, Sabron, Буковка, takefive, Sneer, Metman, El_Duke, ГдеСобакаЗарыта, nabd, Кукуев, evorle145, Prog_man, alexela, Timon1405, ads55, probably, dmt, Гость из Мариуполя, zenon46, АгентБезопаснойНацио, arsik, Михаил Козлов, Гена, paramedic, Zombi, piter3, vis, laeg, Мультук, mortal, Mankubus, MWWRuza
| ☑ |
0
denk
09.09.25
✎
11:22
|
Помогите, пожалуйста, разобраться в следующей ситуации. Есть две даты: 01.09.2025 и 29.10.2024. В запросе РАЗНОСТЬДАТ(&Дата1, &Дата2, ГОД) возвращает 1. А мне надо посчитать количество лет, как разницу между двумя этими датами, желательно, в запросе. В данном случае, количество лет должно быть равно 0. Отнимать 1 от результата тоже не вариант, т.к. в определенных ситуациях считается неправильно. Может, есть какие функции в общих модулях?
|
|
1
Mankubus
09.09.25
✎
11:31
|
Получить разность дат в днях, разделить на количество дней и округлить до целого
|
|
2
lEvGl
гуру
09.09.25
✎
11:34
|
(1) для точности можно в секундах
правда в разных годах разное количество что секунд что дней
|
|
3
maxab72
09.09.25
✎
11:37
|
РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ТоварыНаБухтах.Бухта.ДатаИзготовления, ГОД), НАЧАЛОПЕРИОДА(ТоварыНаБухтах.Регистратор.Дата, ГОД), ГОД)
есть железное правило, всегда сравнивать объекты только одного типа, а значит перед сравнением переводить в один тип.
|
|
4
программистище
09.09.25
✎
11:40
|
Может тогда в месяцах кратно 12?
|
|
5
программистище
09.09.25
✎
11:41
|
(3) для периода в 1 месяц получим разницу в год, если по разные стороны от 1 января
|
|
6
maxab72
09.09.25
✎
11:46
|
(5) Приводи типы к единообразию:
РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ДАТАВРЕМЯ(2024, 12, 15), МЕСЯЦ), НАЧАЛОПЕРИОДА(ДАТАВРЕМЯ(2025, 01, 15), МЕСЯЦ), МЕСЯЦ) Ответ 1
|
|
7
KJlag
09.09.25
✎
11:48
|
(6) полный год не прошел.
в (0) он просит чтобы тут был 0.
он же привел пример с 01.09.2025 и 29.10.2024
|
|
8
Гена
гуру
09.09.25
✎
11:55
|
(6) Сколько раз талдычить, что месяцы анизотропны. Нельзя их вычитать, только прибавлять по стреле времени от прошлого в будущее.
Надо в цикле просто добавлять год к Дата1, ну и счётчик (как раз лет), пока Дата1Новая не превысит Дата2.
Точнее:
Дата1Новая = ДобавитьМесяц(Дата1Новая, 12);
|
|
9
Гена
гуру
09.09.25
✎
12:03
|
Единственно дописать веточку для Романова дня как Дата1.
|
|
10
dmt
09.09.25
✎
12:17
|
|
|
11
Сергиус
09.09.25
✎
13:06
|
(6)РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ДАТАВРЕМЯ(2024, 12, 15), МЕСЯЦ), НАЧАЛОПЕРИОДА(ДАТАВРЕМЯ(2026, 01, 15), МЕСЯЦ), ДЕНЬ) - лучше в днях считать, хотя для високостных годов могут быть нюансы.
|
|
12
denk
09.09.25
✎
13:06
|
Всем спасибо. В (10) мощный инструмент, конечно. AI набирает обороты.
|
|
13
Lama12
09.09.25
✎
13:13
|
(12) 28 феврали обычного года и 28 февраля високосного года, год прошел или нет?
|
|
14
denk
09.09.25
✎
13:30
|
(13) Для данной задачи - год прошел. Если заказчик не скажет обратного. Задача - посчитать количество лет, которое ТМЦ лежит на складе после покупки.
|
|
15
ptiz
09.09.25
✎
13:35
|
(14) Считай месяцы и дели на 12
|
|
16
Волшебник
09.09.25
✎
13:36
|
(14) Дней / 365
|
|
17
lEvGl
гуру
09.09.25
✎
14:11
|
надо думать, что с днями, как и с годами, могут быть неточности
Выбрать РазностьДат(ДатаВремя(2025, 2, 2, 23, 59, 59), ДатаВремя(2025, 2, 3), День)
= 1
|
|
18
spiller26
09.09.25
✎
14:31
|
(16)
ВЫБРАТЬ
ВЫБОР
КОГДА РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&Дата, ГОД), КОНЕЦПЕРИОДА(&Дата, ГОД), ДЕНЬ) = 364
ТОГДА "Не високосный"
ИНАЧЕ "Високосный"
КОНЕЦ КАК ПолеВысокосность
|
|
19
crotnn
09.09.25
✎
14:33
|
(0) Если в запросе, то
ВЫБОР
КОГДА &ДатаОкончания > ДОБАВИТЬКДАТЕ(&ДатаНачала, МЕСЯЦ, 12 * РАЗНОСТЬДАТ(&ДатаНачала, &ДатаОкончания, ГОД))
ТОГДА РАЗНОСТЬДАТ(&ДатаНачала, &ДатаОкончания, ГОД)
ИНАЧЕ РАЗНОСТЬДАТ(&ДатаНачала, &ДатаОкончания, ГОД) - 1
КОНЕЦ КАК ПолныхЛет
(14) Только считает именно полные года, т.е. 28.02.23-28.02.24 - год не прошел.
|
|