Jo_cc
Jo_cc
2019-09-30 08:28
采纳率: 37%
浏览 9.1k
已采纳

mybatisPlus怎样实现按天或按月查询数据??sql语句怎样写?

mybatisPlus怎样实现按天或按月查询数据??sql语句怎样写?
mybatisPlus怎样实现按天或按月查询数据??sql语句怎样写?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • guangcaiwudong
    Kevin.Y.K 2019-09-30 09:10
    已采纳

    看你匹配的字段是什么类型的,如果是字符串的,就用like就好;
    如果是datetime之类的,就传starTime和endTime,

    create_time  >= startTime and create_time < endTime
    
    按天的startTime为2019-09-30 00:00:00,endTime为2019-10-01 00:00:00
    按月一样的道理,startTime为2019-10-01 00:00:00,endTime为2019-11-01 00:00:00
    
    点赞 评论
  • chaitoudaren
    bugpool 2019-09-30 09:11

    mybatisPlus没怎么用过,不过可以在xml中配合使用函数来实现,提供个sql参考吧,假设表为table,就按创建时间create_time为例

    //按月,下面的方法以oracle为例,mysql可以用date_format(date,'%Y-%m)代替to_char函数
    select * from table t where to_char(t.create_time, 'YYYYMM') = '201811' 
    

    当然,如果你的这个时间有索引且数据量大,为了效率,建议用between and 跟 last_date() 来做(mysql都有对应的函数)。

    点赞 评论
  • hjs218
    Json-Huang 2019-09-30 09:15

    参考如下sql模版,例子为按月查询,按天就把%Y%m改成改成%Y%m'%d,只要传入日期参数即可

    <resultMap id="ResultMap" type=“dto类型”>
        <id column="id" property="id" jdbcType="VARCHAR"/>
          <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
    </resultMap>
    
    <select id="selectByDate” parameterType="java.lang.String" resultMap="ResultMap">
        select
        * 
        from 表名
        where  date_format(时间字段名,'%Y%m') =DATE_FORMAT(#{传入的时间,jdbcType=TIMESTAMP}
     , '%Y%m' )
     </select>
    

    也可参考下mybatis-plus的使用:https://www.jianshu.com/p/ceb1df475021

    点赞 评论

相关推荐