2013-03-22 3 views
0

Я получаю итоговое значение из своего стола по дате группировки. Например, если вы посмотрите на картинку ниже, когда я пытаюсь получить значения между '08 .03.2013 'AND '22 .03.2013'. Данных за 18.03.2013 и 20.03.2013 нет.Как получить значения между двумя датами из таблицы, которые не имеют данных несколько дней

Но мне нужна эта дата, потому что я использую highchart на переднем конце и не хочу обрабатывать это на передней стороне.

Есть ли у вас какие-либо предложения?

Благодаря

SELECT TO_CHAR(CR_DATE, 'DD') DAY, TO_CHAR(CR_DATE, 'MM') MONTH, TO_CHAR(CR_DATE, 'YY') YEAR, 
count(STAB_ID) AS total FROM paytrans 
WHERE acct_id = 1552 AND status = 'DND_FNSH' and CR_DATE > '08.03.2013' AND CR_DATE < '22.03.2013' 
GROUP BY TO_CHAR(CR_DATE, 'YY'), TO_CHAR(CR_DATE, 'DD'), TO_CHAR(CR_DATE, 'MM') 
ORDER BY year, month, day 

enter image description here

[Edit для @art]

SELECT TO_CHAR(CR_DATE-1, 'DD') + LEVEL DAY, TO_CHAR(CR_DATE, 'MM') MONTH, TO_CHAR(CR_DATE, 'YY') YEAR,(cr_date-1) + LEVEL AS cr_date 
    FROM 
(
SELECT 
     To_Date('08.05.2013', 'DD.MM.YYYY') end_date, 
     To_Date('08.04.2013', 'DD.MM.YYYY') cr_date 
FROM dual  
) 
CONNECT BY LEVEL <= (end_date - cr_date)+1 
+0

сделать [календарь] таблица (http://www.perpendulum.com/2012/06/calendar-table-script-for-oracle/) и левые присоединяются к нему –

ответ

1

Это календарь в соответствии с вашими датами. Вы можете сравнить даты и календарные даты в запросе:

SELECT cr_date 
    , to_char(cr_date, 'DD') curr_day 
    , to_char(cr_date, 'MM') curr_month 
    , to_char(cr_date, 'YYYY') curr_year 
FROM 
(
SELECT (cr_date-1) + LEVEL AS cr_date 
    FROM 
    (
    SELECT To_Date('08.05.2013', 'DD.MM.YYYY') end_date 
     , To_Date('08.04.2013', 'DD.MM.YYYY') cr_date 
     FROM dual 
    ) 
    CONNECT BY LEVEL <= (end_date - cr_date)+1 
) 
/

CR_DATE CURR_DAY CURR_MONTH CURR_YEAR 
------------------------------------------------- 
4/8/2013  08   04   2013 
4/9/2013  09   04   2013 
4/10/2013 10   04   2013 
.... 
.... 
4/30/2013 30   04   2013 
5/1/2013  01   05   2013 
5/2/2013  02   05   2013 
... 
... 
5/8/2013  08   05   2013 
+0

Спасибо за ваш ответ, но есть проблемы, когда разные месяцы. To_Date ('08 .05.2013 ',' DD.MM.YYYY ') end_date, To_Date ('08 .04.2013', 'DD.MM .YYYY ') cr_date – Talha

+0

@ talhakosen-Что нового? Я всегда проверяю свои запросы ... Запрос дает вам все даты между датой начала 8 апреля 2013 года ('0.08 .04.2013 ') и датой окончания 8 мая 2013 года (08.05.2013). Неважно, какие даты вы используете, запрос будет работать для любых дат. Просто убедитесь, что ваши форматы и даты начала/окончания верны. См. Пересмотренные даты выше. – Art

+0

вы можете посмотреть отредактированный вопрос, мне нужно время, месяц, год поле – Talha

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

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