Oracle-如何查找给定列表中的日期是否介于日期范围之间

Oracle-如何查找给定列表中的日期是否介于日期范围之间,oracle,Oracle,我有一张日期表。 该列表将作为java集合传递。 这个列表是动态的。我想检查列表中的日期是否介于startDate和endDate之间,最好不要使用存储过程 我可以遍历列表,并对列表的每个startDate/endDate对执行查询。 但有可能避免迭代并在一个语句中完成所有工作吗 差不多 select * from myTable where <datesInList> between startDate and endDate; Oracle有没有办法做到这一点 您可以使用tab

我有一张日期表。 该列表将作为java集合传递。 这个列表是动态的。我想检查列表中的日期是否介于startDate和endDate之间,最好不要使用存储过程

我可以遍历列表,并对列表的每个startDate/endDate对执行查询。 但有可能避免迭代并在一个语句中完成所有工作吗

差不多

select * from myTable
where <datesInList> between startDate and endDate;

Oracle有没有办法做到这一点

您可以使用table函数将数组转换为表,然后在SQL查询中使用它。例如:

DECLARE
  v_dates sys.ODCIDateList := sys.ODCIDateList(TO_DATE('01-01-2001','DD-MM-RRRR'), 
                                               TO_DATE('01-02-2001','DD-MM-RRRR'),
                                               TO_DATE('01-03-2001','DD-MM-RRRR'),
                                               TO_DATE('01-04-2001','DD-MM-RRRR'));
  n NUMBER;  
BEGIN
  SELECT COUNT(1)
  INTO n
  FROM TABLE(v_dates)
  WHERE COLUMN_VALUE NOT BETWEEN start_date AND end_date;

  IF n > 0 THEN
    dbms_output.put_line('There''s ' || n || ' dates out of the range');
  ELSE
    dbms_output.put_line('All dates are in the range');
  END IF;    
END;

请提供更多详细信息,例如表格中的样本数据、日期样本列表和预期输出。这是什么样的列表?PL/SQL集合?您的编程语言中的列表?如果是,使用哪种编程语言?Java,C,…列表:'10-01-2015,25-02-2015,20-03-2015,12-12-2016'和要比较的日期是:01-01-2014和01-01-2016您可以尝试选择。。。合并日期以创建一个临时表并对其进行筛选,就像使用BEVERY子句一样,只需更改适当的列名。列表将作为java集合传递。我基本上需要知道这是否可能使用查询,而不必在java中迭代列表并多次调用查询。ODCIDateList的输入将是动态的。在将列表转换为v_日期之前,我可能必须循环浏览列表。