2016-10-27 9 views
1

У меня есть следующий запрос, чтобы получить записи из таблицы с текущим месяцазапрос «получить записи из фактического месяца» не получает мне записи, которые имеют больший день, когда ток один

select * 
from 
    myTable 
where 
    my_date BETWEEN trunc (sysdate, 'mm') AND SYSDATE; 

этот запрос работает, если записи имеют более низкий день по сравнению с текущим одной Например: если сегодня 27/10/2016 и у меня есть запись, которые имеют эту дату: 28/10/2016 запись с датой 28/10/2016 не показывая

I вставьте записи в этом формате TO_DATE('28/10/2016 18:02:44', 'dd/mm/yyyy hh24:mi:ss')

Я хочу, чтобы показать все записи из Curren месяца, даже если день больше, чем фактическая дата

+0

Вам нужны все даты> = чем в первый день текущего месяца? – Aleksej

+0

Мне просто нужны записи, которые имеют дату в текущем месяце –

ответ

3

Либо:

select * 
from 
    myTable 
where 
    my_date BETWEEN trunc (sysdate, 'mm') AND add_months(trunc (sysdate, 'mm'),1)- 1/(24*3600) 

или

select * 
from 
    myTable 
where 
    trunc(my_date,'mm') = trunc (sysdate, 'mm') 

Первый sargable, второй более читаемым.

+0

спасибо, что я попробовал второй, и это сработало, но я не знаю, должен ли я принять ответ потому что вопрос был проголосован, и это было бы против политик stackoverflow. Должен ли я удалить свой вопрос вместо этого? –

+1

Просто примечание о первом предложенном решении - если у вас есть элементы времени в столбце my_date, вам будут отсутствовать все строки, которые появляются после полуночи в последний день. 'my_date> = trunc (sysdate, 'mm') и my_date Boneist

+0

@Boneist Yeh, хорошая точка – JohnHC

1

Если вам нужны даты в текущем месяце

trunc(my_date, 'mm') = trunc(sysdate, 'mm') 

Если вам нужно даты с текущего месяца и на:

my_date >= trunc(sysdate, 'mm') 
+0

Если в будущих месяцах нет дат, это сработало бы – JohnHC

 Смежные вопросы

  • Нет связанных вопросов^_^