Переменная для даты на основе последнего обновления таблицы - SQL Сервер - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь создать переменную даты, основанную на дате последнего запуска таблицы, "b". То есть 4-месячное отставание от даты, извлеченной этим запросом:

select top 1 rundate from b

Это производит дату '202003.'

Это мой код, который пытается произвести переменную дату :

declare @four_month_lag_from_table_update varchar (6)

set @four_month_lag_from_table_update = CAST( year((select top 1 rundate from b)) as varchar(4)) + 
right('00' + (select top 1 rundate from b)-4, 2)

select @four_month_lag_from_table_update

Я получаю код ошибки «Преобразование не выполнено при преобразовании даты и / или времени из символьной строки».

Ожидаемый результат за 4 месяца до даты последнего запуска, поэтому если последний дата запуска 202003 ожидаемый результат 201911.

Скажите, пожалуйста, что я делаю не так?

1 Ответ

0 голосов
/ 10 апреля 2020

Если вы хотите «последний» выпуск, используйте order by или функции агрегирования:

select @rundate = max(rundate)
from b;

Ваша «дата» звучит как строка. Если вы хотите получить четыре месяца до конвертации в дату и конвертировать обратно:

select @rundate = format(dateadd(month, -4,
                                 max(convert(date, concat(rundate, '01')))
                                ), '%y%M'
                        )
from b;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...