mybatis传输日期字符串sql诡异报错

sqlserver+mybatis

sql:

	 SELECT SODD.ITEM_ID
		,DATEDIFF(MM,SOD.DOC_DATE,'2019-04-24') AS MONTH_DIFF 
		,SUM(SODD.BUSINESS_QTY) 下单数量
	 FROM SALES_ORDER_DOC SOD
	 LEFT JOIN SALES_ORDER_DOC_D SODD ON SOD.SALES_ORDER_DOC_ID=SODD.SALES_ORDER_DOC_ID
	 WHERE SOD.ApproveStatus='Y' AND DATEDIFF(MM,SOD.DOC_DATE,'2019-04-24')<6 
	 GROUP BY SODD.ITEM_ID,DATEDIFF(MM,SOD.DOC_DATE,'2019-04-24')

sqlserver中运行sql没有问题

但是在mybatis中:

    List<ProductScheduleDTO> productSchedule(@Param("deadLine") String deadLine,@Param("belong") String belong);
    <select id="productSchedule" parameterType="string" resultMap="productScheduleMap">
        SELECT SODD.ITEM_ID
            ,DATEDIFF(MM,SOD.DOC_DATE,#{deadLine}) AS MONTH_DIFF
            ,SUM(SODD.BUSINESS_QTY) 下单数量
        FROM SALES_ORDER_DOC SOD
        LEFT JOIN SALES_ORDER_DOC_D SODD ON SOD.SALES_ORDER_DOC_ID=SODD.SALES_ORDER_DOC_ID
        WHERE SOD.ApproveStatus='Y' AND DATEDIFF(MM,SOD.DOC_DATE,#{deadLine})&lt;6
        GROUP BY SODD.ITEM_ID,DATEDIFF(MM,SOD.DOC_DATE,#{deadLine} )
    </select>

他就报错:

2019-04-24 16:14:00.963 DEBUG 10428 --- [io-8080-exec-10] c.e.i.m.ReportMapper.productSchedule     : ==>  Preparing: SELECT SODD.ITEM_ID ,DATEDIFF(MM,SOD.DOC_DATE,?) AS MONTH_DIFF ,SUM(SODD.BUSINESS_QTY) 下单数量 FROM SALES_ORDER_DOC SOD LEFT JOIN SALES_ORDER_DOC_D SODD ON SOD.SALES_ORDER_DOC_ID=SODD.SALES_ORDER_DOC_ID WHERE SOD.ApproveStatus='Y' AND DATEDIFF(MM,SOD.DOC_DATE,?)<6 GROUP BY SODD.ITEM_ID,DATEDIFF(MM,SOD.DOC_DATE,? ) 
2019-04-24 16:14:00.966 DEBUG 10428 --- [io-8080-exec-10] c.e.i.m.ReportMapper.productSchedule     : ==> Parameters: 2019-04-24(String), 2019-04-24(String), 2019-04-24(String)
2019-04-24 16:14:01.003 ERROR 10428 --- [io-8080-exec-10] c.e.i.exception.GlobalExceptionHandler   : 
### Error querying database.  Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 选择列表中的列 'SALES_ORDER_DOC.DOC_DATE' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
### The error may exist in com/emc/icm/mapper/ReportMapper.xml
### The error may involve com.emc.icm.mapper.ReportMapper.productSchedule-Inline
### The error occurred while setting parameters

然后我复制了idea插件mybatis sql log日志工具中的sql到编译工具中执行,没毛病

到底哪里有问题啊。。。。。。

 

第二天。。解决了

把gourp by放在外层,第一次只做datediff获得月份差值,第二层再group by就搞定了

还是十分疑惑为什么,这或许是在提醒我该看源码了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值