首页新闻找找看学习计划

求大神解答mybatis里的SQL语句BUG

0
悬赏园豆:5 [待解决问题]

<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属性,请大神帮忙解答

回首笑人间的主页 回首笑人间 | 菜鸟二级 | 园豆:213
提问于:2018-01-11 22:24
< >
分享
所有回答(3)
0

报什么错误贴出来啊,那个时间类型你可以使用String来接收,要不然就是数据库要和属性对应上.

DanBrown | 园豆:1496 (小虾三级) | 2018-01-12 08:06
0

你select中没有 paramterType吗????

吉吉的城 | 园豆:553 (小虾三级) | 2018-01-15 23:18
0

已经找到原因了,首先看这个语句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语句,使用子连接查询

回首笑人间 | 园豆:213 (菜鸟二级) | 2018-01-17 10:01

mysql5.6和5.7对datetime这块处理确实有区别

清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册