
Один из способов сделать это - через Lookup.
Упаковка -
Итак, в основном вы читаете файл, а затем передаете их в Lookup, который будет запускаться для каждого из них и запрашивать в базе данных, чтобы узнать последний день месяца для даты ввода.
Вам нужно, чтобы соединение OLEDB было настроено для запросов к базе данных, и запрос SQL ниже сделает эту работу за вас -
DECLARE @date VARCHAR(10) = ?
SET @date = REPLACE(@date,'.','/');
SET @date = CONVERT(CHAR(10),CONVERT(DATETIME,LEFT(@date,10),105),101);
SET @date = EOMONTH(@date);
SET @date = SUBSTRING(@date, 9, 2) + '/' + SUBSTRING(@date, 6, 2) + '/' + SUBSTRING(@date, 1, 4);
SELECT REPLACE(@date,'/','.') AS Result;
Я часто использую это:
Замените @d столбцом даты.
dateadd("d",-1, --Gets last day of current month
dateadd("mm",1, --Gets 1st day of next month
(DT_DATE)(month(@d) + "/1/" + year(@d)) -- Gets first day of current month
))
В отсутствие таблицы дат это следующее лучшее решение, о котором я знаю - добавьте один месяц, а затем вычтите один день.
Вам может понадобиться несколько приведений для месяца и года в строки