Вы можете достичь этого довольно легко, используя комбинацию компонентов Talend и некоторого Java-кода. У Talend есть хорошая коллекция функций манипулирования датами.
Во-первых, сохраните ваши глобальные переменные даты в виде Date
.
globalMap.put("MinLoginTime", TalendDate.parseDate("yyyy-MM-dd", "2017-10-24"))
Затем tLoop_1
зацикливается на все месяцы между минимальной и максимальной датами. Этот код получает количество месяцев между двумя датами:
TalendDate.diffDate((Date)globalMap.get("MaxLoginTime"),(Date)globalMap.get("MinLoginTime"),"MM")
tJava_3
просто хранит дату текущей итерации в глобальной переменной CURRENT_DATE. Это сумма минимальной даты и текущего значения итерации (от 0 до N месяцев).
globalMap.put("CURRENT_DATE", TalendDate.addDate((Date)globalMap.get("MinLoginTime"), (Integer)globalMap.get("tLoop_1_CURRENT_VALUE"), "MM"))
tFixedFlowInput_1 определяет 2 Date
столбца: FromDate
и ToDate
, чтобы получить первый и последний день месяца текущей итерации соответственно.
TalendDate.getFirstDayOfMonth((Date)globalMap.get("CURRENT_DATE"))
TalendDate.getLastDayOfMonth((Date)globalMap.get("CURRENT_DATE"))
Проверка TalendDate ссылка на класс для всех методов манипулирования датами.