Java 开始日期和结束日期查询不起作用

Java 开始日期和结束日期查询不起作用,java,php,mysql,.net,sql,Java,Php,Mysql,.net,Sql,以下是要求 如果搜索日期范围为2013年5月15日至2013年5月21日,则包含或排除具有以下事件日期范围的事件: 1/01/2013 to 6/30/2013 include 2/15/2013 to 3/15/2013 exclude 5/01/2013 to 5/19/2013 include 5/01/2013 to 5/14/2013 exclude 5/15/2013 to 5/15/2013 include 5/21/2013 to 5/21/2013 include 5/17/2

以下是要求

如果搜索日期范围为2013年5月15日至2013年5月21日,则包含或排除具有以下事件日期范围的事件:

1/01/2013 to 6/30/2013 include
2/15/2013 to 3/15/2013 exclude
5/01/2013 to 5/19/2013 include
5/01/2013 to 5/14/2013 exclude
5/15/2013 to 5/15/2013 include
5/21/2013 to 5/21/2013 include
5/17/2013 to 5/30/2013 include
5/16/2013 to 5/20/2013 include
5/22/2013 to 5/30/2013 exclude
*5/16/2013 to 00/00/0000 include
5/22/2013 to 00/00/0000 exclude*
下面是我提出的问题,但它不符合上述条件

SELECT cm_id,cm_date_from,cm_date_to FROM Cat_Master
WHERE TRUE  AND ( "2013-05-15" BETWEEN cm_date_from AND cm_date_to OR "2013-05-21" BETWEEN cm_date_from AND cm_date_to
    OR "2013-05-15" >= cm_date_from AND "2013-05-21" <= cm_date_to   OR "2013-05-15" <= cm_date_from AND "2013-05-21" >= cm_date_to
    )
从Cat\u主机选择cm\u id、cm\u日期、cm\u日期
若为真,则在cm_日期自和cm_日期至之间为“2013-05-15”,或在cm_日期自和cm_日期至之间为“2013-05-21”
或“2013-05-15”>=cm_日期和“2013-05-21”
截止日期(string1、[format\u mask]、[nls\u language])

截止日期('2013-05-15,'yyyy-mm-dd')

对于日期比较,请使用日期变量


附言:我估计你正在使用Oracle Db(因为你没有提到)

看来你在第二个和第三个
操作符之后错过了大括号。
试试这个:

SELECT cm_id,cm_date_from,cm_date_to
FROM Cat_Master
WHERE TRUE  AND ( 
  "2013-05-15" BETWEEN cm_date_from AND cm_date_to
  OR
  "2013-05-21" BETWEEN cm_date_from AND cm_date_to
  OR
  ( "2013-05-15" >= cm_date_from AND "2013-05-21" <= cm_date_to )
  OR
  ( "2013-05-15" <= cm_date_from AND "2013-05-21" >= cm_date_to )
    )
选择cm\u id、cm\u date\u from、cm\u date\u to
来自猫王
其中,TRUE和(
“2013-05-15”在cm_日期自和cm_日期至之间
或
“2013-05-21”在cm_日期自和cm_日期至之间
或

(“2013-05-15”>=cm_date_from和“2013-05-21”使用日期类型来比较日期

  WHERE ( to_date('2013-05-15','YYYY-MM-DD') BETWEEN cm_date_from AND cm_date_to OR 
  to_date('2013-05-21','YYYY-MM-DD') BETWEEN cm_date_from AND cm_date_to
  OR to_date('2013-05-15','YYYY-MM-DD') >= cm_date_from AND to_date('2013-05-21','YYYY-MM-DD') <= 
  cm_date_to   OR to_date('2013-05-15','YYYY-MM-DD') <= cm_date_from AND 
to_date('2013-05-21','YYYY-MM-DD') >= cm_date_to  );
其中(截止日期('2013-05-15','YYYY-MM-DD')介于起始日期和终止日期之间,或
截止日期('2013-05-21','YYYY-MM-DD'),介于从开始到结束之间

或者to_date('2013-05-15','YYYY-MM-DD')>=cm_date_from和to_date('2013-05-21','YYYY-MM-DD')这个问题仅仅与mysql或sql有关。为什么java、.net和php?“不符合上述条件”您能指出根据您的查询出现错误的条件吗?我们使用的是MYSQL DBHi,此查询返回相同的结果。我想要的结果可以处理2013年5月16日到00/00/0000包括2013年5月22日到00/00/0000排除,此结果是因为在我的数据库中某些cm_日期是00/00/0000默认值