sql—过滤出基于有效数据和术语数据的数据

3gtaxfhh  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(356)

我有一个查询包含开始日期和结束日期,我想过滤出两个日期为基础的数据。我只需要2019年和更高的数据,无论是基于开始或结束日期,如果你可以看看例子。我需要id 1,2,3,6,7和4,5不是必需的。我们可以根据提取年份来做开始日期和结束日期。但是寻找更好的方法谢谢!

  1. CREATE TABLE TEMP
  2. (
  3. ID INT,
  4. SDate DATE,
  5. EDate DATE
  6. )
  7. INSERT INTO TEMP
  8. SELECT 1,'01/01/2014', '01/01/2019' FROM DUAL
  9. UNION ALL
  10. SELECT 2,'01/01/2015', '01/01/2020' FROM DUAL
  11. UNION ALL
  12. SELECT 3,'01/01/2019', '12/31/2019' FROM DUAL
  13. UNION ALL
  14. SELECT 4,'01/01/2012', '12/31/2018' FROM DUAL
  15. UNION ALL
  16. SELECT 5,'01/01/2010', '10/01/2016' FROM DUAL
  17. UNION ALL
  18. SELECT 6,'06/01/2020', '10/01/2020' FROM DUAL
  19. UNION ALL
  20. SELECT 7,'01/01/2021', '03/01/2021' FROM DUAL
z18hc3ub

z18hc3ub1#

像这样的?听起来像你说的,但是-你没有公布你现在是怎么做的。如果那不是“它”,你需要什么“更好”的方法?为什么?我是说,这怎么了?

  1. SQL> select *
  2. 2 from temp
  3. 3 where extract(year from sdate) >= 2019
  4. 4 or extract(year from edate) >= 2019;
  5. ID SDATE EDATE
  6. ---------- ---------- ----------
  7. 1 01/01/2014 01/01/2019
  8. 2 01/01/2015 01/01/2020
  9. 3 01/01/2019 12/31/2019
  10. 6 06/01/2020 10/01/2020
  11. 7 01/01/2021 03/01/2021
  12. SQL>
jdgnovmf

jdgnovmf2#

您只需在 edate 具体如下:

  1. select * from emp
  2. where edate >= date '2019-01-01';

这将使用上的索引 edate ,如果有的话。

相关问题