SELECT sum(ajea.active_electrical) AS value FROM apd_jc_ele_active ajea LEFT JOIN t_pd_sb_znkg tpsz ON tpsz.OBJ_ID = ajea.object_id WHERE ajea.station_id = #{stationId} AND tpsz.KGLX = '1' AND date_format(ajea.create_time,'%Y%m%d') = date_format(#{queryDate}, '%Y%m%d')
这边数据转换实在java代码里写的,#{queryDate}是传过来的时间,比如今天10号,这边传过来就是2019-04-10,传过来的上周的今日就是2019-04-03,因为今天周三,所以就想查上周一到上周三的数据和(如果是周四就查周一到周四的和),四月初到10号的值,上个月月初到上个月10号的值,去年年初到四月10号的值,今年年初到四月10号的值,比较复杂,星期,月份,年的查询可以分开写,我现在就是不知道怎么写where语句。 小菜鸟一只 求大佬解救。没看懂你的描述,看题目的话查询月初到今日的,你拿到今天的值可以写个时间类获取本月第一天的值(你描述里面的逻辑可以在这里做)
,完后传个map过来,里面放时间段,完后date_format(ajea.create_time,'%Y%m%d') >= startTime and date_format(ajea.create_time,'%Y%m%d')<=endTime
就可以了。不知道你是不是这个意思
获取月初的方法:
select to_char(trunc(add_months(last_day(sysdate), -1) + 1),'yyyymmdd') from dual;
所以
where date between to_date(to_char(trunc(add_months(last_day(sysdate), -1) + 1),'yyyymmdd'),'yyyymmdd' ) and sysdate