在本周第一天基础上 ,添加本月第一天 本年第一天<select id="selectTrend" resultMap="BaseResultMap"> SELECT DATE_FORMAT(statistics_date, '%Y-%m-%d') as statisticsDate, COUNT(*) as lotteryWinCount FROM t_lottery_statistics_prize WHERE statistics_date BETWEEN #{weekBegin} AND NOW() GROUP BY DATE_FORMAT(statistics_date, '%Y-%m-%d') ORDER BY DATE_FORMAT(statistics_date, '%Y-%m-%d') DESC </select>
时间: 2024-03-27 14:40:28 浏览: 16
你可以使用 MySQL 的内置函数 `DATE_FORMAT()` 和 `NOW()` 来获取本月第一天和本年第一天的值。
查询本月第一天的 SQL 语句如下:
```
SELECT DATE_FORMAT(NOW() ,'%Y-%m-01');
```
查询本年第一天的 SQL 语句如下:
```
SELECT DATE_FORMAT(NOW() ,'%Y-01-01');
```
在 MyBatis 的映射文件 `TrendMapper.xml` 中,你需要添加两个参数,分别对应本月第一天和本年第一天的值。然后在 SQL 语句中使用这两个参数来替换原来的日期值。
修改后的 SQL 语句如下:
```
SELECT DATE_FORMAT(statistics_date, '%Y-%m-%d') as statisticsDate, COUNT(*) as lotteryWinCount
FROM t_lottery_statistics_prize
WHERE statistics_date BETWEEN #{weekBegin} AND NOW() AND statistics_date >= #{monthBegin} AND statistics_date >= #{yearBegin}
GROUP BY DATE_FORMAT(statistics_date, '%Y-%m-%d')
ORDER BY DATE_FORMAT(statistics_date, '%Y-%m-%d') DESC
```
其中,`#{monthBegin}` 和 `#{yearBegin}` 分别对应本月第一天和本年第一天的参数。
在 Java 代码中,你需要定义这两个参数的值,并将它们传递给 MyBatis 的 SQL 语句。
示例代码如下:
```java
public List<Trend> selectTrend(Date weekBegin) {
Date monthBegin = ... // 计算本月第一天的值
Date yearBegin = ... // 计算本年第一天的值
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("weekBegin", weekBegin);
paramMap.put("monthBegin", monthBegin);
paramMap.put("yearBegin", yearBegin);
return sqlSession.selectList("com.yuxiang.dtsociety.lottery.dao.TrendDao.selectTrend", paramMap);
}
```
其中,`weekBegin` 参数是原来已经存在的,`monthBegin` 和 `yearBegin` 参数是新增的。在 `paramMap` 中,将这三个参数都传递给 MyBatis 的 SQL 语句。