SQL中常常要判断两个时间段是否相交,该如何判断呢?比如两个时间段(S1,E1)和(S2,E2).我最先想到的是下面的方法一.方法一:(S1 BETWEEN S2 AND E2) OR (S2 BETWEEN S1 AND E1).很好理解:一个时间段的开始时间S1在另一个时间中间(S2,E2),或者开始时间S2在另一个时间中间(S1,E1),这个方法比较繁琐 方法二:本方法先考虑这两段时间什么情况下不相交,如图: -----+-----------------+-------------
select * from persons o where trunc(o.create_date) = to_date('2018-07-30','yyyy-mm-dd') minus 对比数据完全一样. select * from persons o where o.create_date > to_date('2018-07-30','yyyy-mm-dd') and o.create_date < to_date('2018-07-30','yyyy-mm-dd')+1 minus
select count(*) tt from crm_cisco_call_detailwhere DateTime between to_date('2016-4-5 00:00:00','yyyy-mm-dd hh24:mi:ss') and to_date('2016-05-02','yyyy-mm-dd hh24:mi:ss')
通过HashSet达到对象集去重的实现(jdk1.8) public class Contract { private String contractId; private String contractName; private Date begin; private Date end; @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o
今天在网上找到了Oracle中对判定条件where 1=1的正解,粘贴出来和大家分享下 1=1 是永恒成立的,意思无条件的,也就是说在SQL语句里有没有这个1=1都可以. 这个1=1常用于应用程序根据用户选择项的不同拼凑where条件时用的.如:web界面查询用户的信息,where默认为1=1,这样用户即使不选择任何条件,sql查询也不会出错.如果用户选择了姓名,那么where变成了where 1=1 and 姓名='用户输入的姓名',如果还选择了其他的条件,就不断在where 条件后追加 an
返回1-31,或者1-12,或者某个 select rownum from dual connect by rownum<31 就是connect by http://marcospring.iteye.com/blog/1721600 ORACLE获取某个时间段之间的月份列表 获取某个时间段之间的月份列表(示例返回2009-03到2010-03之间的月份列表) SELECT TO_CHAR(ADD_MONTHS(TO_DATE('2009-03','YYYY-MM'),ROWNUM-1