您的位置:首页 > 数据库 > Oracle

oralce 查询30天后生日 解决方案(解决跨年问题)

2017-12-08 00:00 239 查看
select
PCC.INVNM custName,
to_char(TO_DATE(pcc.BIRTHDAY, 'yyyyMMdd'),'yyyy/MM/dd') birthday
from  PRSP_CRM_CUSTINFO pcc where  PCC.DELETE_FLG='0'

<if test="isYears=='0'.toString()">
and	to_char(TO_DATE(pcc.BIRTHDAY, 'yyyyMMdd'),'MMdd') >= to_char(sysdate,'MMdd')
and
to_char(TO_DATE(pcc.BIRTHDAY, 'yyyyMMdd'),'MMdd') <![CDATA[ <= ]]> to_char(sysdate+30,'MMdd')
</if>
<if test="isYears=='1'.toString()">
and	to_char(TO_DATE(pcc.BIRTHDAY, 'yyyyMMdd'),'MMdd') >= to_char(sysdate,'MMdd')
or
to_char(TO_DATE(pcc.BIRTHDAY, 'yyyyMMdd'),'MMdd') <![CDATA[ <= ]]> to_char(sysdate+30,'MMdd')
</if>

首先根据 当前日期 判断 30天后是否 跨年

/**
* 判断跨年
* @return 不返回true(跨年 返回false)
*/
public static boolean isYares(){
boolean flg=false;
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");//设置日期格式
Date today = new Date();
Calendar theCa = Calendar.getInstance();
theCa.setTime(today);
theCa.add(theCa.DATE, +30);//最后一个数字30可改,30天的意思
Date start = theCa.getTime();
String endDate = df.format(start);//三十天之前日期
String startDate=df.format(today);
String endYear = endDate.substring(0, 4);
String startYear = startDate.substring(0, 4);
if(endYear.equals(startYear)){
flg=true;
}
return flg;
}

根据这个赋值 isYears 去判断

目前一条SQL 解决的 暂时没看到。所以用了 一个动态sql解决

有问题随时联系 QQ群 600922504
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java oracle
相关文章推荐