Разные результаты в запросах - PullRequest
1 голос
/ 28 февраля 2020

У меня есть два похожих запроса:

select COUNT(*), to_char(start_time,'YYYYMMDD') from EXECUTIONS where 
to_char(start_time,'YYYYMMDD') >= '20200101' and
to_char(start_time,'YYYYMMDD') <= '20200131' 
AND SERVER IN ('PRO','PRE','DE')
group by to_char(start_time,'YYYYMMDD') ORDER BY to_char(start_time,'YYYYMMDD')  ASC ;
---------
select
    SERVER,
    APP,
    sum(case when ended_status = 16 then 1 else 0 end) OK,
    sum(case when ended_status = 32 then 1 else 0 end) BAD,
        count(ended_status) TOTAL
from EXECUTIONS
where start_time >= '20200101' and start_time <= '20200131'
and SERVER in ('PRO','PRE','DE')
group by
    SERVER,
    APP
order by SERVER,APP;

Я видел, что в последнем запросе последний день месяца (2020131) не включен в запрос.

Я не могу понять, почему. Не могли бы вы помочь мне, пожалуйста?

1 Ответ

3 голосов
/ 28 февраля 2020

Имеет временную составляющую. Правильный лог c:

where start_time >= '20200101' and
      start_time <  '20200201'

Это безопасно как для даты, так и для даты / времени. Я настоятельно рекомендую использовать такие неравенства для всех сравнений дат, поэтому вам не нужно беспокоиться о том, является ли компонент времени частью значения. И вышесказанное является индекс безопасным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...