Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
DATEADD
|
|||
|---|---|---|---|
|
#18+
В общем, вопрос по оператору DATEADD. Есть таблица, в первой колонке даты начала в формате хххх-хх-хх, во второй количество месяцев. Нужно создать третью колонку, с датами окончания. Все типы данных - nvarchar. Нужно менять их на smalldate и int, или и так сработает? И если пытаться добавить просто через select - ругается, что получено больше одного значения. Подозреваю, что надо джойнить. Но не до конца понимаю как именно Ну, для примера: DATE_BEGIN 2017-12-07 2017-02-15 2017-01-13 term_months 36 12 36 То есть в 3 колонке (DATE_END) грубо говоря должно получиться: 2020-12-07 2018-02-15 2020-01-13 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2018, 22:54 |
|
||
|
DATEADD
|
|||
|---|---|---|---|
|
#18+
Для даты уже давно есть правильные типы. И в названии этих типов нет слова "char", но есть слово "date". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2018, 23:32 |
|
||
|
DATEADD
|
|||
|---|---|---|---|
|
#18+
SiмbаTLM, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. DATE_BEGIN term_months DATE_END 2017-12-07 36 2020-12-07 2017-02-15 12 2018-02-15 2017-01-13 36 2020-01-13 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 00:22 |
|
||
|
DATEADD
|
|||
|---|---|---|---|
|
#18+
Огромное спасибо! Тогда еще вопросик) Таблица [Данные] DATE_BEGIN -- дата начала кредита 2017-12-07 2017-02-15 2017-01-13 term_months -- срок кредита 36 12 36 AMOUNT -- сумма кредита 115000 113510 155000 INTEREST_RATE_EFFECT -- ставка 16,9 16,95 16,55 DATE_END -- дата окончания кредита 2020-12-07 2018-02-15 2020-01-13 Таблица [Table_1] [Период] янв.17 фев.17 мар.17 апр.17 май.17 июн.17 июл.17 авг.17 сен.17 окт.17 ноя.17 дек.17 янв.18 [Объем погашения за период] -- нужно заполнить сумму всех погашений действующих кредитов за выбранный месяц Ну и, собственно, части паззла запроса UPDATE [dbo].[График погашения] SET [Объем погашения за период] = sum((SELECT [AMOUNT] from [Данные]) * (((15.00/100.00/12.00)+((15.00/100.00/12.00)/((POWER(1+(15.00/100.00/12.00),12)-1)))))) -- Формула аннуитентных платежей, только как заменить на данные из [Данные], чтобы опять не сругался на "больше одного значения" WHERE DATE_END from [Данные] >= --Начало месяца. То есть, если фев.17, то >= '2017-02-01' AND WHERE DATE_BEGIN from [Данные] <= --Конец месяца. То есть, если фев.17, то <= '2017-02-01' Собрав конструктор, получаем в поле [Объем погашений за период] WHERE [Период] = 'фев.17' месячную сумму платежей по всем действующим кредитам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 18:46 |
|
||
|
DATEADD
|
|||
|---|---|---|---|
|
#18+
По логике такой запрос должен подойти (после танцев с бубном - нужно для каждого периода заводить первый и последний день): SELECT SUM(CAST (AMOUNT AS decimal(20,2))) FROM [Task2].[dbo].[Данные задача №2] WHERE (CAST (DATE_BEGIN AS DATE)) <= --последний день периода AND DATEADD(month, CAST(term_months AS int), CAST(DATE_BEGIN AS DATE)) >= --первый день периода Но тип значений поля AMOUNT - varchar, при попытке изменить тип на decimal запрос выдает ошибку: "Ошибка при преобразовании типа данных varchar к numeric" Пытался побороть через DECLARE, так как прочитал, что нужно сначала изменить тип, а потом включать в sum. Но не помогло( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 21:30 |
|
||
|
DATEADD
|
|||
|---|---|---|---|
|
#18+
SiмbаTLM, Вдумайтесь - AMOUNT это сумма. Как сумма может быть varchar? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 02:45 |
|
||
|
DATEADD
|
|||
|---|---|---|---|
|
#18+
SiмbаTLMНо тип значений поля AMOUNT - varchar, при попытке изменить тип на decimal запрос выдает ошибку: "Ошибка при преобразовании типа данных varchar к numeric"Так там данные лежать кривые. Найти и поправить, потом поменять тип. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 15:23 |
|
||
|
DATEADD
|
|||
|---|---|---|---|
|
#18+
alexeyvg, Ага, уже сам понял, спасибо. Изменил через excel в дробных числах запятую на точку - заработало) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 19:28 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39587985&tid=1690441]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 360ms |

| 0 / 0 |
