研发过程中遇到需要根据两个时间相差几个月,计算出月份后,联合查询以年月为后缀的数据库表。
例如: 2020-011-11 15:30:30 ~ 2021-03-11 15:30:30,需要计算出 2020-11、2020-12、
2021-01、2021-02、2021-03 计算出。
现在提供一个比较low的方法:
func MakeSelectTable(startDate , endDate time.Time, prfix string) string {
if startDate.Sub(endDate) > 0 {
return ""
}
arr := []string{}
yearS:= startDate.Year()
monthS:=int(startDate.Month())
yearE:=endDate.Year() * 100000
monthE :=int(endDate.Month())
i := 0
for {
if yearS * 100000 + monthS <= yearE + monthE {
i = i +1
arr = append(arr,fmt.Sprintf(prfix+"%d_%02d",yearS,monthS))
monthS = monthS + 1
if monthS > 12 {
yearS = yearS + 1
monthS = 1
}
}else {
break
}
}
fmt.Println("arr====",arr)
if len(arr) > 1 {
return " ( SELECT * FROM " + strings.Join(arr, " UNION SELECT * FROM ") + " ) "
}else{
return "SELECT * FROM " + arr[0]
}
}