// 验证添加的日期段不能与数据库中已有的日期段重复
// 2017-12-31 前端输入的开始时间
// 2018-01-01前端输入的结束时间
// 补充:前端开始时间和结束时间是将Date类型转化为String类型
SELECT COUNT(*)
FROM Table T
where 1 = 1
AND T.id != 32
AND ((T.START_DATE <=
TO_DATE('2017-12-31 23:59:59', 'YYYY-MM-DD HH24:MI:SS') AND
T.END_DATE >=
TO_DATE('2017-12-31 00:00:00', 'YYYY-MM-DD HH24:MI:SS'))
OR (T.START_DATE <=
TO_DATE('2018-01-01 23:59:59', 'YYYY-MM-DD HH24:MI:SS') AND
T.END_DATE >=
TO_DATE('2018-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS'))
OR (T.START_DATE >=
TO_DATE('2017-12-31 00:00:00', 'YYYY-MM-DD HH24:MI:SS') AND
T.END_DATE <=
TO_DATE('2018-01-01 23:59:59', 'YYYY-MM-DD HH24:MI:SS')))
StringBuilder sb = new StringBuilder();
sb.append(" SELECT COUNT(*) FROM TS_SYS_HOLIDAY T where 1=1 ");
if(tsSysHoliday.getRid()!=null) {
sb.append(" AND T.rid!= ").append(tsSysHoliday.getRid());
}
if(tsSysHoliday.getStartDate()!=null && tsSysHoliday.getEndDate()!=null) {
sb.append(" AND ((T.START_DATE <= TO_DATE('").append(DateUtils.formatDate(tsSysHoliday.getStartDate())).append(" 23:59:59','YYYY-MM-DD HH24:MI:SS')");
sb.append(" AND T.END_DATE >= TO_DATE('").append(DateUtils.formatDate(tsSysHoliday.getStartDate())).append(" 00:00:00','YYYY-MM-DD HH24:MI:SS'))");
sb.append(" OR (T.START_DATE <= TO_DATE('").append(DateUtils.formatDate(tsSysHoliday.getEndDate())).append(" 23:59:59','YYYY-MM-DD HH24:MI:SS')");
sb.append(" AND T.END_DATE >= TO_DATE('").append(DateUtils.formatDate(tsSysHoliday.getEndDate())).append(" 00:00:00','YYYY-MM-DD HH24:MI:SS'))");
sb.append(" OR (T.START_DATE >= TO_DATE('").append(DateUtils.formatDate(tsSysHoliday.getStartDate())).append(" 00:00:00','YYYY-MM-DD HH24:MI:SS')");
sb.append(" AND T.END_DATE <= TO_DATE('").append(DateUtils.formatDate(tsSysHoliday.getEndDate())).append(" 23:59:59','YYYY-MM-DD HH24:MI:SS')))");
}