定义日期变量为
TX_DATE=20200707
首先日期加减的基础常识
#日期加1天
date -d "$TX_DATE 1 days" +%Y%m%d
#日期减1天
date -d "$TX_DATE -1 days" +%Y%m%d
#日期加一个月
date -d "$TX_DATE next month" +%Y%m%d
#日期加一年
date -d "$TX_DATE next year" +%Y%m%d
接下来根据指定日期得到 月初 月末 季初 季末 年初 年末 周开始 周结束 旬初 旬末日期
报表中常用到
#月初
m_s_date=${TX_DATE:0:6}01 #${TX_DATE:0:6}是截取TX_DATE变量从0字符开始6位
#月末
m_e_date=`date -d "$TX_DATE next month" +%Y%m%d`
m_e_date=`date -d "${m_e_date:0:6}01 -1 day" +%Y%m%d`
#年初
y_s_date=${TX_DATE:0:4}0101
#年末
y_e_date=`date -d "$TX_DATE next year" +%Y%m%d`
y_e_date=`date -d "${y_e_date:0:4}0101 -1 day" +%Y%m%d`
#周初
n_week=`date -d "$TX_DATE" +%w`
if [ $n_week -eq 0 ];then
n_week=7
fi
w_s_date=`date -d "$TX_DATE -$((n_week-1)) days" +%Y%m%d`
#周末
w_e_date=`date -d "$TX_DATE $((7-n_week)) days" +%Y%m%d`
#季初
#季末
mm=${TX_DATE:4:2}
if (( mm >= 1 )) && (( mm <= 3 )) ;then
q_s_date=${TX_DATE:0:4}0101
q_e_date=${TX_DATE:0:4}0331
elif (( mm >= 4 )) && (( mm <= 6 )) ;then
q_s_date=${TX_DATE:0:4}0401
q_e_date=${TX_DATE:0:4}0630
elif (( mm >= 7 )) && (( mm <= 9 )) ;then
q_s_date=${TX_DATE:0:4}0701
q_e_date=${TX_DATE:0:4}0930
else
q_s_date=${TX_DATE:0:4}0701
q_e_date=`date -d "$TX_DATE next month" +%Y%m%d`
q_e_date=`date -d "${q_e_date:0:6}01 -1 day" +%Y%m%d`
fi
#旬初
#旬末
dd==${TX_DATE:6:2}
if (( dd >= 1 )) && (( d <= 10 )) ;then
tenday_s_date=${TX_DATE:0:6}01
tenday_e_date=${TX_DATE:0:6}10
elif (( d >= 11 )) && (( dd <= 20 )) ;then
tenday_s_date=${TX_DATE:0:6}11
tenday_e_date=${TX_DATE:0:6}20
else
tenday_s_date=${TX_DATE:0:6}21
tenday_e_date=`date -d "$TX_DATE next month" +%Y%m%d`
tenday_e_date=`date -d "${tenday_e_date:0:6}01 -1 day" +%Y%m%d`