<select id="getLineDataOfAgent" resultType="com.ph.entity.ext.Line">
SELECT
CONVERT(p.create_date,DATE) 'dateTime',
SUM(p.poundage_cny) 'countCNY',
SUM(p.poundage_bsc) 'countBSC'
FROM
pa_performance p,
pa_referral_code c
WHERE
p.referral_id = c.id AND
DATE_FORMAT(p.create_date, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m') AND
c.partner_code = #{partnerCode} AND
c.agent_code = #{agentCode}
GROUP BY
TO_DAYS(p.create_date)
ORDER BY
TO_DAYS(p.create_date) ASC
</select>
要返回的实体类:
public class Line {
private Date dateTime;
private BigDecimal countBSC;
private BigDecimal countCNY;
public Date getDateTime() {
return dateTime;
}
public void setDateTime(Date dateTime) {
this.dateTime = dateTime;
}
public BigDecimal getCountBSC() {
return countBSC;
}
public void setCountBSC(BigDecimal countBSC) {
this.countBSC = countBSC;
}
public BigDecimal getCountCNY() {
return countCNY;
}
public void setCountCNY(BigDecimal countCNY) {
this.countCNY = countCNY;
}
}
数据库里create_date字段是datetime属性,请大神帮忙解答
报什么错误贴出来啊,那个时间类型你可以使用String来接收,要不然就是数据库要和属性对应上.
你select中没有 paramterType吗????
已经找到原因了,首先看这个语句CONVERT(p.create_date,DATE) 'dateTime',这个一个聚合语句,我的项目在本地跑的时候是没有问题,因为我的本地服务器是mysql5.6版本,这个版本还是支持一些模糊错误查询语句的,这么说可能不太好理解,你可以理解为对于SQL语句的要求不是那么的严格,但是当这个项目在线上跑的时候就会报错,报错原因就是这段代码,这是为什么呢?是因为我们线上的服务器mysql版本是5.7的,mysql5.7相对于mysql5.6版本,在SQL语法上要求严格了很多,如果想降低mysql5.7的SQL语句要求标准变为和5.6一样,需要自己手动修改mysql5.7的配置,两个服务器mysql版本不一致,导致的BUG,只有两种解决方案,一种是修改服务器兼容,一种是修改SQL语句,使用子连接查询
mysql5.6和5.7对datetime这块处理确实有区别