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

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

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

CREATE TABLE TEMP
(
ID INT,
SDate DATE,
EDate DATE
)

INSERT INTO TEMP
SELECT 1,'01/01/2014', '01/01/2019' FROM DUAL
UNION ALL
SELECT 2,'01/01/2015', '01/01/2020' FROM DUAL
UNION ALL
SELECT 3,'01/01/2019', '12/31/2019' FROM DUAL
UNION ALL
SELECT 4,'01/01/2012', '12/31/2018' FROM DUAL
UNION ALL
SELECT 5,'01/01/2010', '10/01/2016' FROM DUAL
 UNION ALL
SELECT 6,'06/01/2020', '10/01/2020' FROM DUAL
UNION ALL
SELECT 7,'01/01/2021', '03/01/2021' FROM DUAL
z18hc3ub

z18hc3ub1#

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

SQL> select *
  2  from temp
  3  where extract(year from sdate) >= 2019
  4     or extract(year from edate) >= 2019;

        ID SDATE      EDATE
---------- ---------- ----------
         1 01/01/2014 01/01/2019
         2 01/01/2015 01/01/2020
         3 01/01/2019 12/31/2019
         6 06/01/2020 10/01/2020
         7 01/01/2021 03/01/2021

SQL>
jdgnovmf

jdgnovmf2#

您只需在 edate 具体如下:

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

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

相关问题