Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как вывести предыдущий месяц в формате 201812 / 10 сообщений из 10, страница 1 из 1
13.08.2019, 10:35
    #39848656
Romanov-krd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести предыдущий месяц в формате 201812
Нужно вывести предыдущий месяц в таком формате 201812, если функцию dateadd использовать то разумеется неправильно считает.
Код: sql
1.
select dateadd (month,-1,201901) 



результат =2452-09-14 00:00:00.000 а нужен 201812
...
Рейтинг: 0 / 0
13.08.2019, 10:40
    #39848658
Kopelly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести предыдущий месяц в формате 201812
Romanov-krd,

select dateadd (month,-1,201901*100+1)
select case when 201901 %100 =1 then (201901/100-1)*100+12 else 201901-1 end
...
Рейтинг: 0 / 0
13.08.2019, 10:42
    #39848659
Kopelly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести предыдущий месяц в формате 201812
первый нерабочий:
select dateadd (month,-1,cast(201901 as varchar(10)) +'01')
...
Рейтинг: 0 / 0
13.08.2019, 11:04
    #39848672
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести предыдущий месяц в формате 201812
Romanov-krdНужно вывести предыдущий месяц в таком формате 201812, если функцию dateadd использовать то разумеется неправильно считает.
Код: sql
1.
select dateadd (month,-1,201901) 




результат =2452-09-14 00:00:00.000 а нужен 201812Потому что 201901 - это целое число.
При преобразованию в дату получается 1 января 1900 года + 201901 дней.
Число 201901 надо задавать в одинарных кавычках (как строку) - '201901'
...
Рейтинг: 0 / 0
13.08.2019, 11:06
    #39848675
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести предыдущий месяц в формате 201812
iapRomanov-krdНужно вывести предыдущий месяц в таком формате 201812, если функцию dateadd использовать то разумеется неправильно считает.
Код: sql
1.
select dateadd (month,-1,201901) 





результат =2452-09-14 00:00:00.000 а нужен 201812Потому что 201901 - это целое число.
При преобразованию в дату получается 1 января 1900 года + 201901 дней.
Число 201901 надо задавать в одинарных кавычках (как строку) - '201901'Ой! Прошу прощения! Надо же и число там задать: '201901 01 '

Хотя, для первого января можно указывать только 4 цифры года. Но это только для 1 января!
...
Рейтинг: 0 / 0
13.08.2019, 11:13
    #39848680
Romanov-krd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести предыдущий месяц в формате 201812
Kopelly,

да. там в первом случае формат такой получается 2018-12-01 00:00:00.000
а нужен 201812

а без кейсов как нибудь можно? вот в терадате норм функция есть
ADD_MONTHS_ID ( 201901 , -1) которая все возвращает а в ms sql найти такую не могу
...
Рейтинг: 0 / 0
13.08.2019, 11:44
    #39848706
andy st
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести предыдущий месяц в формате 201812
Romanov-krd,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
create function add_months_id(@dt int, @incr int)
returns int
as 
begin 
  return cast(convert(varchar(6),dateadd(month,@incr,cast(@dt as varchar(20))+'01'),112)as int)	
end

select dbo.add_months_id(201901,-1)
...
Рейтинг: 0 / 0
13.08.2019, 11:46
    #39848708
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести предыдущий месяц в формате 201812
Код: sql
1.
select format(dateadd(month,-1,'20190101'),'yyyyMM') 
...
Рейтинг: 0 / 0
13.08.2019, 12:14
    #39848732
Kopelly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести предыдущий месяц в формате 201812
Romanov-krdда. там в первом случае формат такой получается 2018-12-01 00:00:00.000
а нужен 201812

100*Year(dateadd())+Month(dateadd())
...
Рейтинг: 0 / 0
13.08.2019, 12:38
    #39848745
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести предыдущий месяц в формате 201812
Romanov-krd,

Код: sql
1.
select convert(char(6), dateadd(month, -1, getdate()), 112);
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как вывести предыдущий месяц в формате 201812 / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]