JAVA中的代码 主要是 为了算出SQL中的limit 的值
// 时间相减求天数
public static Long timePhaseReduction(String startTimeStr, String endTimeStr) {
long day = 0;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
Date startTime = simpleDateFormat.parse(startTimeStr);
Date endTime = simpleDateFormat.parse(endTimeStr);
day = ((endTime.getTime() - startTime.getTime()) / (24 * 60 * 60 * 1000))+1;
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(day);
return day;
}
小例子
这个70 就是从 代码中的 day,时间:2021-11-01 也是从代码中传过来的时间, 这个test的表 尽量找个数据量比较多的表
SELECT
@date := DATE_ADD( @date, INTERVAL + 1 DAY ) AS DAY
FROM
( SELECT @date := DATE_ADD( '2021-11-01', INTERVAL - 1 DAY ) FROM test LIMIT 70 ) time
实际用的时候
SELECT
@date := DATE_ADD( @date, INTERVAL + 1 DAY ) AS DAY
FROM
( SELECT @date := DATE_ADD( #{startTime}, INTERVAL - 1 DAY ) FROM test LIMIT #{day}) time