Pular para o conteúdo

Fóruns SQL e PL/SQL [DÚVIDA SELECT] [DÚVIDA SELECT]

#95324
diegomello
Participante

    Barbada, gurizão…
    É só adicionar um ADD_MONTHS.


    SQL> SELECT dia_mes
    2 ,CASE
    3 WHEN TO_CHAR(dia_mes, 'd') BETWEEN 2 AND 6 THEN
    4 TO_CHAR(dia_mes + 12 / 24, 'dd/mm/rrrr hh24:mi')
    5 ELSE
    6 TO_CHAR(dia_mes, 'Day', 'NLS_DATE_LANGUAGE=PORTUGUESE')
    7 END entrada
    8 ,CASE
    9 WHEN TO_CHAR(dia_mes, 'd') BETWEEN 2 AND 6 THEN
    10 dia_mes + 13 / 24
    11 END saida
    12 FROM (SELECT data + LEVEL - 1 dia_mes
    13 FROM (SELECT ADD_MONTHS(TRUNC(SYSDATE, 'mm'), 1) data
    14 FROM dual)
    15 CONNECT BY data + LEVEL - 1 <= LAST_DAY(TRUNC(data)));

    DIA_MES ENTRADA SAIDA


    1/8/2010 Domingo
    2/8/2010 02/08/2010 12:00 2/8/2010 13:00
    3/8/2010 03/08/2010 12:00 3/8/2010 13:00
    4/8/2010 04/08/2010 12:00 4/8/2010 13:00
    5/8/2010 05/08/2010 12:00 5/8/2010 13:00
    6/8/2010 06/08/2010 12:00 6/8/2010 13:00
    7/8/2010 Sábado
    8/8/2010 Domingo
    9/8/2010 09/08/2010 12:00 9/8/2010 13:00
    10/8/2010 10/08/2010 12:00 10/8/2010 13:00
    11/8/2010 11/08/2010 12:00 11/8/2010 13:00
    12/8/2010 12/08/2010 12:00 12/8/2010 13:00
    13/8/2010 13/08/2010 12:00 13/8/2010 13:00
    14/8/2010 Sábado
    15/8/2010 Domingo
    16/8/2010 16/08/2010 12:00 16/8/2010 13:00
    17/8/2010 17/08/2010 12:00 17/8/2010 13:00
    18/8/2010 18/08/2010 12:00 18/8/2010 13:00
    19/8/2010 19/08/2010 12:00 19/8/2010 13:00
    20/8/2010 20/08/2010 12:00 20/8/2010 13:00
    21/8/2010 Sábado
    22/8/2010 Domingo
    23/8/2010 23/08/2010 12:00 23/8/2010 13:00
    24/8/2010 24/08/2010 12:00 24/8/2010 13:00
    25/8/2010 25/08/2010 12:00 25/8/2010 13:00
    26/8/2010 26/08/2010 12:00 26/8/2010 13:00
    27/8/2010 27/08/2010 12:00 27/8/2010 13:00
    28/8/2010 Sábado
    29/8/2010 Domingo
    30/8/2010 30/08/2010 12:00 30/8/2010 13:00
    31/8/2010 31/08/2010 12:00 31/8/2010 13:00

    31 rows selected