Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
1 / 1 / 1
Регистрация: 09.07.2016
Сообщений: 74
1

Вычисление даты и выплат

16.04.2017, 13:28. Показов 1236. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Есть база данных. Необходимо определить количество выплат особым образом, которое прошло с некоторой определённой даты. Сделал с помощью вычисляемого поля так:
T-SQL
1
(datediff(month,Tel.[Дата подключения], getdate())
Таким образом я определил лишь разницу в месяцах, но не в выплатах, то есть полученные значения будут неточными. Есть два условия нахождения выплат:
1. Первая выплата происходит в день "Даты подключения";
2. Каждая последующая выплата должна происходить 20-го числа каждого месяца.
Хоть убейте, но не могу придумать то, как реализовать это в виде вычисляемого поля(
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.04.2017, 13:28
Ответы с готовыми решениями:

Вычисление даты в условии скрипта
Доброго дня! Подскажите, есть ли способ оптимизировать работу. На еженедельной основе, в...

Вычисление выплат по кредиту
Ребята ,добрый вечер. Есть задачка. Надо реализовать на С++. Без использования векторов. ...

Вычисление выплат по месяцам
Здравствуйте! Помогите, пожалуйста, написать формулу, вычисляющую месяц платежа поставщиков и...

Вычисление даты
Имеется кол-во часов нагрузки в виде часов к примеру: "лекций=10", "лаб=10", "пз=10", которые между...

3
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
16.04.2017, 14:37 2
Лучший ответ Сообщение было отмечено Noname User как решение

Решение

Учитывая, что
SQL
1
2
3
4
5
6
7
SELECT datediff(MONTH, '20170301', '20170401')
UNION ALL
SELECT datediff(MONTH, '20170331', '20170401')
UNION ALL
SELECT datediff(MONTH, '20170301', '20170430')
UNION ALL
SELECT datediff(MONTH, '20170331', '20170430')
даст
1
1
1
1

а
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT datediff(MONTH, '20170301', '20170401') + 
  CASE WHEN DAY('20170301') < 20 THEN 1 ELSE 0 END +
  CASE WHEN DAY('20170401') > 20 THEN 1 ELSE 0 END
UNION ALL
SELECT datediff(MONTH, '20170331', '20170401') + 
  CASE WHEN DAY('20170331') < 20 THEN 1 ELSE 0 END+
  CASE WHEN DAY('20170401') > 20 THEN 1 ELSE 0 END
UNION ALL
SELECT datediff(MONTH, '20170301', '20170430') + 
  CASE WHEN DAY('20170301') < 20 THEN 1 ELSE 0 END+
  CASE WHEN DAY('20170430') > 20 THEN 1 ELSE 0 END
UNION ALL
SELECT datediff(MONTH, '20170331', '20170430') + 
  CASE WHEN DAY('20170331') < 20 THEN 1 ELSE 0 END+
  CASE WHEN DAY('20170430') > 20 THEN 1 ELSE 0 END
даст
2
1
3
2
сможете довести свою формулу до ума?
1
1 / 1 / 1
Регистрация: 09.07.2016
Сообщений: 74
16.04.2017, 15:30  [ТС] 3
Ух, никогда бы не додумался до такой конструкции, работает)
Только в гугле не могу найти, что означают плюсы в первой и второй строчках(
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
16.04.2017, 15:34 4
всего лишь операция сложения жалкой единички с недостающими единичками
1
16.04.2017, 15:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.04.2017, 15:34
Помогаю со студенческими работами здесь

Вычисление даты
Всем привет! Столкнулся с проблемой, задали задание на вычитание точной даты от исходной. Задача:...

вычисление даты
Есть дата например 31.12.2013. Реализуйте средствами языка JavaScript скрипт, который будет...

Вычисление даты
Нужна помошь! Имеется 2 таблицы. Поля первой таблицы: Товар(числовое), тип(числовое), дата,...

Вычисление даты
Имеется задача.Найти заказы, выполненные не позднее, чем через два дня после их получения. У меня...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru