Oracle: выбор даты по месяцу с предложением where - PullRequest
0 голосов
/ 28 мая 2019

Я столкнулся с проблемой, что при выборе даты для текущего желаемого месяца и года. Я попробовал 2 утверждения, показанные ниже, но не смог выполнить запрос

select to_char(sysdate, 'Month') from income

select * from income where to_char(sysdate,month) = 'feb'

Обновление

Но после исследования и углубленного изучения на веб-сайте oracle docs. То, что я вышел, это использовать предложение «между». Указание первого дня и последнего дня месяца. При этом он выполнит нужный месяц / год

Для примера

SELECT column_name
FROM table_name where column_name = (Your own value) AND
column_date >= to_date('01/02/2012', 'dd/mm/yyyy')
and column_date <  to_date('01/03/2012', 'dd/mm/yyyy')  

Надеюсь, это поможет:)

Ответы [ 3 ]

2 голосов
/ 28 мая 2019

Вы хотите что-то вроде:

select *
from   income
where  <date_column> >= to_date('01/05/2019', 'dd/mm/yyyy')
and    <date_column> <  to_date('01/06/2019', 'dd/mm/yyyy')

(заменив <date_column> именем столбца даты в таблице доходов, по которой вы хотите фильтровать)?

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

Если вы хотите передать строку типа 'May 2012', я бы порекомендовал:

select i.*
from income i
where i.datecol >= to_date('May 2012', 'Mon YYYY') and
      i.datecol < to_date('May 2012', 'Mon YYYY') + interval '1' month;

Тем не менее, я думаю, что ваше приложение должно превратить строковое значение в диапазон дат, и вы должны использоватьэтот диапазон в вашем запросе:

select i.*
from income i
where i.datecol >= :datestart
      i.datecol < :dateend + interval '1 day';

Я настоятельно рекомендую вам избегать between с датами, особенно в Oracle.Тип данных date имеет встроенный компонент времени, который может отбрасывать сравнения.

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

Я думаю, что вы можете использовать следующий запрос:

select *
from   income
where  to_char(<date_column>,'MON-RRRR') = 'MAY-2019';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...