Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как найти год+месяц в ms sql  [new]
Romanov-krd
Member

Откуда:
Сообщений: 99
нужно найти предыдущий месяц в формате 201908 из int -201909
пишу функцию
concat(year(dateadd (month,-1,cast(201909 as varchar(10)) +'01') ) /*находим предыдущий месяц*/
 , month(dateadd (month,-1,cast(201909 as varchar(10)) +'01') ))


но получается в итоге 20198, но если стоит к примеру 201912 то получается как и надо 201911

как тут доработать запрос чтобы получить корректный результат?
3 сен 19, 17:15    [21962719]     Ответить | Цитировать Сообщить модератору
 Re: Как найти год+месяц в ms sql  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 32129
Блог
Romanov-krd,

очевидно, что у вас потерялся ведущий 0 из-за работы с цифрами
3 сен 19, 17:19    [21962725]     Ответить | Цитировать Сообщить модератору
 Re: Как найти год+месяц в ms sql  [new]
Focha
Member

Откуда: Москва
Сообщений: 445
Romanov-krd
нужно найти предыдущий месяц в формате 201908 из int -201909
пишу функцию
concat(year(dateadd (month,-1,cast(201909 as varchar(10)) +'01') ) /*находим предыдущий месяц*/
 , month(dateadd (month,-1,cast(201909 as varchar(10)) +'01') ))


но получается в итоге 20198, но если стоит к примеру 201912 то получается как и надо 201911

как тут доработать запрос чтобы получить корректный результат?



select format(dateadd (month,-1,cast(201909 as varchar(10)) +'01') ,'yyyyMM')
3 сен 19, 17:21    [21962727]     Ответить | Цитировать Сообщить модератору
 Re: Как найти год+месяц в ms sql  [new]
Focha
Member

Откуда: Москва
Сообщений: 445
Romanov-krd
нужно найти предыдущий месяц в формате 201908 из int -201909
пишу функцию
concat(year(dateadd (month,-1,cast(201909 as varchar(10)) +'01') ) /*находим предыдущий месяц*/
 , month(dateadd (month,-1,cast(201909 as varchar(10)) +'01') ))


но получается в итоге 20198, но если стоит к примеру 201912 то получается как и надо 201911

как тут доработать запрос чтобы получить корректный результат?



select format(dateadd (month,-1,cast(201909 as varchar(10)) +'01') ,'yyyyMM')
3 сен 19, 17:21    [21962729]     Ответить | Цитировать Сообщить модератору
 Re: Как найти год+месяц в ms sql  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 6697
Romanov-krd,

DECLARE @d INT = 201909

SELECT DATEADD(month, -1, DATEFROMPARTS(@d/100, @d % 100, 1))
4 сен 19, 13:07    [21963345]     Ответить | Цитировать Сообщить модератору
 Re: Как найти год+месяц в ms sql  [new]
iap
Member

Откуда: Москва
Сообщений: 46833
SELECT CONVERT(CHAR(6),DATEADD(MONTH,-1,STR(201909*100+1)),112)
4 сен 19, 15:15    [21963539]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить