Dias da Semana dentro do Mês

21/02/2018

0

Olá a todos.

Estou quebrando a cabeça com o DateUtils, mas ainda não cheguei no resultado que preciso. Vamos ao problema:
- Preciso que passando uma determinada data ele me retorne qual é o primeiro e o ultimo dia da semana dentro do mês. Exemplo:
Exemplo 1 - Passando dia 02/02/2018 preciso que ele me retorne "1ª SEMANA - 01 A 02";
Exemplo 2 - Passando dia 13/02/2018 preciso que ele me retorne "3ª SEMANA - 19 A 23";

OBS: Quando a data cair no fds ele deve escrever a data da próxima semana.
Exemplo: Passando dia 10/02/2018(sábado) preciso que ele me retorne "3ª SEMANA - 19 A 23";

Se eu conseguir no firebird fica melhor ainda... como está hj:
, CASE(EXTRACT(DAY FROM VENCIMENTO) / 7) + 1
WHEN 1 THEN '1ª SEMANA - 01 A 07'
WHEN 2 THEN '2ª SEMANA - 08 A 14'
WHEN 3 THEN '3ª SEMANA - 15 A 21'
WHEN 4 THEN '4ª SEMANA - 21 A 28'
WHEN 5 THEN '5ª SEMANA - MAIOR QUE 28'
END SEMANA

Alguém pode dar uma mão?

Obrigado a tds!
Marcelo Letteri

Marcelo Letteri

Responder

Posts

22/02/2018

Marcelo Letteri

Pessoal, resolvido via firebird:<br />
<br />
, CAST(<br />
iif( EXTRACT( DAY FROM cast(PAR.PARVENCIMENTO as date) ) >= ( EXTRACT( DAY FROM CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE )))<br />
and EXTRACT( DAY FROM cast(PAR.PARVENCIMENTO as date) ) <= ( ( 6 - EXTRACT( WEEKDAY FROM( CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) ) + EXTRACT( DAY FROM CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) )<br />
, ''1º Semana de '' || ( EXTRACT( DAY FROM CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ))) || '' a '' || ( ( 6 - EXTRACT( WEEKDAY FROM( CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) ) + EXTRACT( DAY FROM CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) )<br />
, iif( EXTRACT( DAY FROM cast(PAR.PARVENCIMENTO as date) ) >= ( ( ( 6 - EXTRACT( WEEKDAY FROM( CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) ) + EXTRACT( DAY FROM CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) + 1 )<br />
and EXTRACT( DAY FROM cast(PAR.PARVENCIMENTO as date) ) <= ( ( ( 6 - EXTRACT( WEEKDAY FROM( CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) ) + EXTRACT( DAY FROM CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) +1 + 6 )<br />
, ''2º Semana de '' || ( ( ( 6 - EXTRACT( WEEKDAY FROM( CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) ) + EXTRACT( DAY FROM CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) + 1 ) || '' a '' || ( ( ( 6 - EXTRACT( WEEKDAY FROM( CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) ) + EXTRACT( DAY FROM CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) +1 + 6 )<br />
, iif( EXTRACT( DAY FROM cast(PAR.PARVENCIMENTO as date) ) >= ( ( ( 6 - EXTRACT( WEEKDAY FROM( CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) ) + EXTRACT( DAY FROM CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) +1 + 6 +1 )<br />
and EXTRACT( DAY FROM cast(PAR.PARVENCIMENTO as date) ) <= ( ( ( 6 - EXTRACT( WEEKDAY FROM( CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) ) + EXTRACT( DAY FROM CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) +1 + 6 + 1 + 6 )<br />
, ''3º Semana de '' || ( ( ( 6 - EXTRACT( WEEKDAY FROM( CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) ) + EXTRACT( DAY FROM CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) +1 + 6 +1 ) || '' a '' || ( ( ( 6 - EXTRACT( WEEKDAY FROM( CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) ) + EXTRACT( DAY FROM CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) +1 + 6 + 1 + 6 )<br />
, iif( EXTRACT( DAY FROM cast(PAR.PARVENCIMENTO as date) ) >= ( ( ( 6 - EXTRACT( WEEKDAY FROM( CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) ) + EXTRACT( DAY FROM CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) +1 + 6 + 1 + 6 + 1 )<br />
and EXTRACT( DAY FROM cast(PAR.PARVENCIMENTO as date) ) <= ( ( ( 6 - EXTRACT( WEEKDAY FROM( CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) ) + EXTRACT( DAY FROM CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) +1 + 6 + 1 + 6 + 1 + 6 )<br />
, ''4º Semana de '' || ( ( ( 6 - EXTRACT( WEEKDAY FROM( CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) ) + EXTRACT( DAY FROM CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) +1 + 6 + 1 + 6 + 1 ) || '' a '' || ( ( ( 6 - EXTRACT( WEEKDAY FROM( CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) ) + EXTRACT( DAY FROM CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) +1 + 6 + 1 + 6 + 1 + 6 )<br />
, ''5º Semana de '' || ( ( ( 6 - EXTRACT( WEEKDAY FROM( CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) ) + EXTRACT( DAY FROM CAST( EXTRACT( MONTH FROM cast(PAR.PARVENCIMENTO as date) ) || ''-01-'' || EXTRACT( YEAR FROM cast(PAR.PARVENCIMENTO as date) ) AS DATE ) ) ) +1 + 6 + 1 + 6 + 1 + 6 + 1 ) || '' em diante''<br />
<br />
)<br />
)<br />
)<br />
) AS VARCHAR(40)<br />
) SEMANA<br />
<br />
<br />
RESOLVIDO
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar