правильная дата выхода не приходит - PullRequest
0 голосов
/ 11 октября 2018

мой запрос:

SELECT
  TO_CHAR(TO_DATE(FROM_DATE,'DD-MM-YYYY HH24:MI:SS'),'DD-MM-YY') AS "FROM DATE",
  TO_CHAR(TO_DATE(TO_DATE,'DD-MM-YYYY HH24:MI:SS'),'DD-MM-YY')   AS "TO DATE"
FROM TRN_ACTUAL_TABLE
WHERE TO_CHAR(TO_DATE(FROM_DATE,'DD-MM-YYYY HH24:MI:SS'),'DD-MM-YY') BETWEEN '01-08-2018 00:00' AND '20-08-2018 00:00'
AND IS_DELETE=0;

вывод:

output

в этом выходном месяце октября (10-е)даты идут, но я ищу августовские (восьмые) даты

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Лучше использовать RR вместо YY и RRRR вместо YYYY против проблемы 2k года и избавиться от TO_CHAR преобразования в предложении where как:

SELECT TO_CHAR(TO_DATE(FROM_DATE,'DD-MM-RRRR HH24:MI:SS'),'DD-MM-RR') AS "FROM DATE",
       TO_CHAR(TO_DATE(TO_DATE,'DD-MM-RRRR HH24:MI:SS'),'DD-MM-RR')   AS "TO DATE"
  FROM TRN_ACTUAL_TABLE 
 WHERE TO_DATE(FROM_DATE,'DD-MM-RRRR HH24:MI:SS') 
    BETWEEN TO_DATE('01-08-2018 00:00:00','DD-MM-RRRR HH24:MI:SS') 
        AND TO_DATE('20-08-2018 00:00:00','DD-MM-RRRR HH24:MI:SS')
        AND IS_DELETE=0;

Rextester Demo

0 голосов
/ 11 октября 2018

Вы должны сравнивать даты по обе стороны от BETWEEN, и вы должны использовать действительные литералы даты Oracle в RHS.

WHERE
    TO_DATE(FROM_DATE,'DD-MM-YYYY HH24:MI:SS') BETWEEN
        DATE '2018-08-01' AND DATE '2018-08-20' AND ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...