Есть странный алгоритм, в котором мне нужно возвращать даты, которые являются датами окончания месяца, меньшими или равными данной дате окончания месяца.
По сути, мы создаем динамический диапазон дат, который будет использоватьсяв файле SQL. Поэтому я хочу сказать, что, учитывая эту дату 20200315, верните мне все даты окончания месяца меньше, чем указанная дата, но ОСТАНОВИТЕСЬ в сентябре 2019 года. Кроме того, игнорируйте октябрь 2019 года.
Итак, учитывая 20200331, вы вернетесь ...
20200331
20200229
20200131
20191231
20191130
20190930
Если бы мне дали 20200731, оно вернулось бы ...
20200731
20200630
20200531
20200430
20200331
20200229
20200131
20191231
20191130
20190930
Теперь вот еще одно требование. Это должно быть ограничено в 12 ДАТАХ !! Итак, если бы мне дали 20201130, он бы вернулся ...
20201130
20201031
20200930
20200831
20200731
20200630
20200531
20200430
20200331
20200229
20200131
20191231
поверьте, это работает
for i in {1..11}
do
thisDate=`date -d "$(date -d ${prevDate} +%Y-%m-01) -1 day" +%Y%m%d`
if ((${thisDate} < 20190930)); then
break
elif ((${thisDate} == 20191031)); then
prevDate=${thisDate}
(( i += 1 ))
else
dateRange="${dateRange}'${thisDate}',"
prevDate=${thisDate}
(( i += 1 ))
fi
сделано