Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL Oracle中按日期差异进行筛选_Sql_Oracle_Where - Fatal编程技术网

在SQL Oracle中按日期差异进行筛选

在SQL Oracle中按日期差异进行筛选,sql,oracle,where,Sql,Oracle,Where,我有一个脚本,它从许多不同的表中收集数据,并返回所有结果,这个脚本不是我写的,有1000多行代码。要简化: SELECT date_of_opening, ...<many other columns> FROM <some other sub queries>; 由于它返回整个数据集,我想将其限制为仅在30天内打开的数据集,我尝试了: SELECT * FROM (SELECT d

我有一个脚本,它从许多不同的表中收集数据,并返回所有结果,这个脚本不是我写的,有1000多行代码。要简化:

SELECT 
       date_of_opening,
       ...<many other columns>
FROM
       <some other sub queries>;
由于它返回整个数据集,我想将其限制为仅在30天内打开的数据集,我尝试了:

SELECT *
FROM 
      (SELECT 
              date_of_opening,
              ...<many other columns>
       FROM
              <some other sub queries>)
WHERE date_of_opening - to_date('23.01.2011','dd.mm.yyyy') BETWEEN (-30) and (-1) ;
导致

ORA-00932:不一致的数据类型:预期的字符获取日期

但是,如果我在select中尝试相同的查询,它将显示正确的差异:

SELECT 
       date_of_opening,
       date_of_opening - to_date('23.01.2011','dd.mm.yyyy') as difference,
       ...<many other columns>
FROM
       <some other sub queries>;
例如,假设开业日期为2010年12月31日,则差值为-23

我还尝试先计算差异,然后过滤-30和-1之间的差异,但得到

ORA-00932:不一致的数据类型:预期数量获取日期

期初的过去期初数据类型为日期


我可以使用什么方法过滤结果,或者这种行为的原因是什么?

30天的时间可能是:

WHERE date_of_opening  BETWEEN (to_date('23.01.2011','dd.mm.yyyy')-30) and (to_date('23.01.2011','dd.mm.yyyy')) 

假设开业日期确实是一个日期。

30天的期限可能是:

WHERE date_of_opening  BETWEEN (to_date('23.01.2011','dd.mm.yyyy')-30) and (to_date('23.01.2011','dd.mm.yyyy')) 

假设开业日期确实是一个日期。

很好,谢谢。你知道我的方法有什么错误吗?不确定,但我认为这种方法可读性更好,如果可以的话,可以使用开盘日期的索引。很好,谢谢。你知道我的方法有什么错误吗?不确定,但我认为这种方法可读性更好,如果可用,可以使用开盘日期索引。在你没有向我们显示的查询部分,开盘日期是否可能转换为其他类型?因为你的查询应该是有效的:@a_horse_和_no_name我在查询中没有看到施法动作。同样在select中,我试图计算差异,但它实际上成功了,我也尝试了_numberdifference>-30,这一点都没有帮助。你看了我链接中的示例了吗?你给我们展示的条件是有效的。在你没有向我们展示的查询部分,一定有什么东西打破了这一点。@a_horse_与_no_name是的,我访问了链接,我自己也尝试过,但我真的找不到任何关于开幕日期的演员,开始怀疑自己是否错过了什么,但是现在再检查两次,仍然没有看到任何对开张日期的操纵,因为我说:你没有给我们看的部分一定有什么东西打破了这一点。可能是您不知道的隐式投射。但是,由于您选择不向我们显示完整的代码,这是不可能回答的。在您未向我们显示的查询部分,是否可能将开始日期转换为其他类型?因为你的查询应该是有效的:@a_horse_和_no_name我在查询中没有看到施法动作。同样在select中,我试图计算差异,但它实际上成功了,我也尝试了_numberdifference>-30,这一点都没有帮助。你看了我链接中的示例了吗?你给我们展示的条件是有效的。在你没有向我们展示的查询部分,一定有什么东西打破了这一点。@a_horse_与_no_name是的,我访问了链接,我自己也尝试过,但我真的找不到任何关于开幕日期的演员,开始怀疑自己是否错过了什么,但是现在再检查两次,仍然没有看到任何对开张日期的操纵,因为我说:你没有给我们看的部分一定有什么东西打破了这一点。可能是您不知道的隐式投射。但由于您选择不向我们展示完整的代码,这是不可能回答的。