|
Как в запросе из даты вычесть дату и получить количество: год.месяц.дней | ☑ | ||
---|---|---|---|---|
0
PAvel321
09.02.18
✎
19:18
|
Добрый вечер.
Ситуация такая: Есть дата приема на работу и текущая дата. Нужно получить стаж сотрудника на последнем месте работы. В виде например 4 года3 месяца 12 дней. Как это можно сделать. Пока что на ум приходит РАЗНОСТЬДАТ но там получу лишь количество дней. А это не удобно для вычисления и не совсем точно. Кто нибуть знает метод получше? |
|||
1
Базис
naïve
09.02.18
✎
19:20
|
На примере покажи, как ты САМ это считаешь.
С 10 января 2013 по сегодня. |
|||
2
PAvel321
09.02.18
✎
19:23
|
ВЫБОР
КОГДА СотрудникиОрганизаций.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ТОГДА РАЗНОСТЬДАТ(&ДатаОкончания, СотрудникиОрганизаций.ДатаПриемаНаРаботу, ДЕНЬ) ИНАЧЕ РАЗНОСТЬДАТ(СотрудникиОрганизаций.ДатаУвольнения, СотрудникиОрганизаций.ДатаПриемаНаРаботу, ДЕНЬ) КОНЕЦ КАК НепрерывныйСтажРаботы |
|||
3
ПегийЛунь
09.02.18
✎
19:24
|
||||
4
H A D G E H O G s
09.02.18
✎
19:24
|
(2) Обработай при выводе
|
|||
5
PAvel321
09.02.18
✎
19:25
|
Получаю количество дней. После этого смогу вычислить примерное время. С количеством лет то легко, а вот с месяцами и днями будут расхождения.
Но лучше способ я не придумал. |
|||
6
H A D G E H O G s
09.02.18
✎
19:25
|
Расстрелять за (3) такое.
|
|||
7
romix
09.02.18
✎
19:26
|
(0) В СКД можно вызывать функции общего модуля, ими всё вычислять.
|
|||
8
ПегийЛунь
09.02.18
✎
19:28
|
(6) Задача - сделать в _запросе_
Если постобработка, то прям из ЗиУП выдернуть функцию. |
|||
9
romix
09.02.18
✎
19:29
|
А строку вида "4 года 3 месяца 12 дней" можно получить вычитанием в цикле внутри функции (не запросом), или более интеллектуально - операцией "знак процента" (остаток от целочисленного деления).
|
|||
10
Cyberhawk
09.02.18
✎
19:30
|
С 1 марта 2015 по 1 марта 2016 прошел 1 год
С 1 марта 2016 по 1 марта 2016 прошел 1 год Но количество дней разное :) |
|||
11
Cyberhawk
09.02.18
✎
19:30
|
*по 1 марта 2017 во второй строчке
|
|||
12
Cyberhawk
09.02.18
✎
19:30
|
Так что арифметические манипуляции не прокатят
|
|||
13
Cyberhawk
09.02.18
✎
19:31
|
Но автору нужен какой-то "стаж". Что это?
|
|||
14
romix
09.02.18
✎
19:34
|
(12) Может устроить ДобавитьМесяц(Дата, СколькоМесяцевДобавить) - остальное дни. Это делать в цикле. 12 месяцев считать одним годом.
|
|||
15
PAvel321
09.02.18
✎
19:34
|
Ладно попробую в СКД с помощью функции.
Я просто надеялся что может существует какое нибуть элегантное решение в запросе о котором я не знал. |
|||
16
PAvel321
09.02.18
✎
19:35
|
(14) как вариант.
Потеря 1 дня в высокосный год не должна стать трагедией |
|||
17
Cyberhawk
09.02.18
✎
19:40
|
(14) Пока нет понимания, что же требуется получить на выходе, всякие такие придумки несут мало пользы
|
|||
18
breezee
09.02.18
✎
20:23
|
(0) А период между работами вы учитывете?
|
|||
19
Serg_1960
09.02.18
✎
20:49
|
Имхо, "стаж" в виде лет, месяцев и дней - абстрактная величина. Я не буду упоминать среднее количество календарных дней 29,3 :)), объясню на более простом примере:
период в 31 день == 1 месяц == 1 месяц + 1 день == 1 месяц + 2 дня == 1 месяц + 3 дня. Все варианты - верные, но в зависимости от ситуации. О чём мой спич? Сначала устанавливаем правила определения значений, потом рассчитываем. |
|||
20
Cyberhawk
09.02.18
✎
20:53
|
(19) Ты опоздал, начиная с (10) Я двигаю эту тему )
|
|||
21
SleepyHead
гуру
10.02.18
✎
07:33
|
(2) Если бы еще автор ответил, какую задачу он решает, можно было бы двигать. А так задроство какое-то, извините за выражение.
|
|||
22
pasha_d
12.02.18
✎
09:31
|
чо за конфа? юзай регламентированный календарь.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |