SSIS - последний день месяца с даты ввода

У меня есть пакет, который получает поле даты из плоского файла. Есть ли какое-нибудь быстрое преобразование этой даты в последнюю дату того же месяца?

например Ввод: 01.08.2019 Выход: 31.08.2019

Заранее большое спасибо

Работа с датами и временем в языке Java
Работа с датами и временем в языке Java
Работа с датами и временем в языке Java была сильно переработана начиная с версии Java 8 и далее с появлением библиотеки java.time.
0
0
628
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Один из способов сделать это - через 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
))

Вам может понадобиться несколько приведений для месяца и года в строки

KeithL 03.08.2018 16:04

В отсутствие таблицы дат это следующее лучшее решение, о котором я знаю - добавьте один месяц, а затем вычтите один день.

J Weezy 03.08.2018 17:06

Другие вопросы по теме