SELECT DATE_FORMAT(create_time, '%Y-%m') AS month, FORMAT(count(1) / DAY(LAST_DAY(create_time)) * 100, 2) AS applyRate FROM sp_immigration GROUP BY DATE_FORMAT(create_time, '%Y-%m'); 报错Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'ycyy_sj.sp_immigration.create_time' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by,如何更改sql,进而不报错?
时间: 2024-03-09 22:50:24 浏览: 22
为了避免这个错误,你可以将非聚合列 create_time 进行聚合,或者将其移除 SELECT 列表。以下是两种解决方法:
1. 将非聚合列 create_time 进行聚合,例如使用 MIN 或者 MAX 函数:
```
SELECT DATE_FORMAT(create_time, '%Y-%m') AS month,
FORMAT(COUNT(1) / DAY(LAST_DAY(create_time)) * 100, 2) AS applyRate,
MAX(create_time) AS create_time
FROM sp_immigration
GROUP BY DATE_FORMAT(create_time, '%Y-%m');
```
2. 将非聚合列 create_time 从 SELECT 列表中移除:
```
SELECT DATE_FORMAT(create_time, '%Y-%m') AS month,
FORMAT(COUNT(1) / DAY(LAST_DAY(create_time)) * 100, 2) AS applyRate
FROM sp_immigration
GROUP BY DATE_FORMAT(create_time, '%Y-%m');
```
这两种方法都可以避免这个错误,你可以根据实际需求选择其中一种。
相关问题
QueryWrapper DATE_FORMAT(time, '%Y-%m-%d')
在使用QueryWrapper的时候,可以使用`DATE_FORMAT`函数来格式化日期字段。`DATE_FORMAT`函数用于将日期字段按照指定的格式进行格式化。
假设你有一个时间字段`time`,你想要将其格式化为`YYYY-MM-DD`的形式,可以使用如下的方式:
```java
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class YourService {
@Autowired
private YourMapper yourMapper;
public List<YourEntity> getEntitiesByDate() {
QueryWrapper<YourEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.apply("DATE_FORMAT(time, '%Y-%m-%d')", "2021-12-31");
// 其他查询条件...
return yourMapper.selectList(queryWrapper);
}
}
```
在上述示例中,我们创建了一个`QueryWrapper<YourEntity>`对象,并使用`apply`方法来应用`DATE_FORMAT`函数,指定格式化的日期为`2021-12-31`。你可以在`apply`方法中添加其他查询条件来满足你的需求。
这样,你就可以在使用QueryWrapper时使用`DATE_FORMAT`函数对时间字段进行格式化了。请注意,具体函数的写法可能会因为你所使用的数据库而有所不同,请根据你所使用的数据库的函数语法进行相应的调整。
SELECT DATE_FORMAT(JYTIME, ‘%Y%m’) as sj FROM ZSJC_JCWTS DATE_FORMAT'不是可以识别的 内置函数名称
SELECT DATE_FORMAT(JYTIME, '%Y%m') as sj FROM ZSJC_JCWTS 是一条SQL查询语句,用于从表ZSJC_JCWTS中选择JYTIME列,并将其格式化为年月的形式。DATE_FORMAT是MySQL数据库中的内置函数,用于将日期时间数据按照指定的格式进行格式化。
在这个查询语句中,'%Y%m'是日期格式化的模式,其中%Y表示四位数的年份,%m表示两位数的月份。通过使用DATE_FORMAT函数,我们可以将JYTIME列中的日期时间数据按照指定的格式进行显示。
如果你在使用这个查询语句时遇到了问题,可能是因为你所使用的数据库系统不支持DATE_FORMAT函数或者函数名称写错了。请确保你正在使用的数据库系统支持DATE_FORMAT函数,并且正确地拼写了函数名称。