我试图过滤掉'31-01-2020'之前的数据和'01-01-2020'之后的数据,但是下面的查询不成功。我是否遗漏了一些比较日期的东西?
select *
from per_all_assignments_m paam
where 1 = 1
and TO_CHAR(paam.effective_start_date, 'DD-MM-YYYY') <= '31-01-2020'
and TO_CHAR(paam.effective_END_date, 'DD-MM-YYYY') >= '01-01-2020'
and assignment_number like '%555%'
and assignment_type = 'E'
不要把日期变成字符串来比较。首先,你所使用的格式使得比较是错误的。即使你使用的是正确的日期格式,这仍然是非常低效的。
相反,将它们与字面日期进行比较。
where
effective_start_date >= date '2020-01-01'
and effective_start_date < date '2020-02-01'
你可以试试
select * from per_all_assignments_m paam
where 1=1
and (paam.effective_start_date <= to_date('31-01-2020', 'dd-mm-rrrr') OR paam.effective_END_date >= to_date('01-01-2020', 'dd-mm-rrrr'))
and assignment_number like '%555%'
and assignment_type = 'E'