#--以今日日期推算前6個月日期的程式邏輯Start--#
#宣告變數
DEFINE g_bdate Date
DEFINE l_date Date
DEFINE l_date1 LIKE type_file.chr8
DEFINE l_date2 LIKE type_file.chr8
DEFINE l_date3 LIKE type_file.chr8
#以今日日期得到此年月的第一日的日期型態格式資料 ex: 2021/05/01
LET l_date = MDY(MONTH(g_today),1,YEAR(g_today))
#將日期格式資料轉變格式為yyyymmdd ex: 20210501
LET l_date1 = l_date USING 'yyyymmdd'
#推算月份扣除6個月的月數 ※若當月為05,扣除6會呈現01,沒有負數喔!
LET l_date2 = l_date1[5,6]-6 USING '&&'
LET l_date3 = '12'
#表示扣除後的月份為前一年 ex: 2021年05月回推6個月是2020年11月
IF l_date1[5,6] <= '06' THEN
#從12月反扣取得是前一年的幾月 ex:05月扣除6是01,再用12-01得到去年11月
LET l_date2 = l_date3-l_date2 USING '&&'
#推出前6月的年月日:年度扣一、推算出的前一年月份
LET l_date2 = l_date1[1,4]-1 USING '&&&&',l_date2 USING '&&',l_date1[7,8]
ELSE
#同年度、推算出的月份
LET l_date2 = l_date1[1,4],l_date2,l_date1[7,8]
END IF
#將推算完的前6個月日期以日期型態格式資料給變數值,以利show回畫面上
LET g_bdate = MDY(MONTH(l_date2),1,YEAR(l_date2))
#--以今日日期推算前6個月日期的程式邏輯END--#
以上分享,若有更好的寫法也歡迎與我分享唷
留言列表