› Fóruns › SQL e PL/SQL › [DÚVIDA SELECT] › [DÚVIDA SELECT]
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