Сравнение дат без получения фактических данных в запросе sql - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь отфильтровать данные до даты «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'

Ответы [ 2 ]

0 голосов
/ 28 мая 2020

Можете попробовать

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'
0 голосов
/ 28 мая 2020

Не превращайте даты в строку для сравнения. Во-первых, формат, который вы используете, делает сравнение неверным. И даже если вы использовали правильный формат даты, это все равно было бы очень неэффективно.

Вместо этого сравните их с буквальными датами:

where 
    effective_start_date >= date '2020-01-01'
    and effective_start_date < date '2020-02-01'
...