Jump to content

dev botao

fixar o ultimo dia mês atual Firebird


consultoria Soft
  • Este tópico foi criado há 816 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

//Tenho a Data abaixo  '12/31/2022'. Gostaria de criar de criar um filtro FIXO sempre com o ultimo dia e mês atual,

 

SELECT CODIGOATIVOPRINCIPAL, A.CODIGOCONTACONTABIL CONTADEPRECIACAO, A.CODIGO, A.DESCRICAO,
 A.VALORAQUISICAO,A.DTAQUISICAO,a.TXDEPANUAL,
 P.Nome NomeConta, P.CODIGOREDUZIDO, A.NUMEROPATRIMONIO, C.codigoreduzido as CentroCustoCReduzido, 
 coalesce((SELECT SUM(D.VALOR)
 FROM TABDEPRECIACAO D
 WHERE D.CODIGOEMPRESA = A.CODIGOEMPRESA AND
 D.CODIGOFILIAL = A.CODIGOFILIAL AND
 D.CODIGOATIVO = A.CODIGO AND
 D.TIPOMOVIMENTO = 0 AND 
 D.REFERENCIA <= '12/31/2022'), A.VALORABERTURA) as Abertura,
 (SELECT SUM(D.VALOR)
 FROM TABDEPRECIACAO D
 WHERE D.CODIGOEMPRESA = A.CODIGOEMPRESA AND
 D.CODIGOFILIAL = A.CODIGOFILIAL AND
 D.CODIGOATIVO = A.CODIGO AND
 D.TIPOMOVIMENTO = 2 AND
 D.REFERENCIA <= '12/31/2022') Baixa,
 (SELECT SUM(D.VALOR)
 FROM TABDEPRECIACAO D
 WHERE D.CODIGOEMPRESA = A.CODIGOEMPRESA AND
 D.CODIGOFILIAL = A.CODIGOFILIAL AND
 D.CODIGOATIVO = A.CODIGO AND
 D.TIPOMOVIMENTO = 1 AND
 D.REFERENCIA <= ' 12/31/2022') Depreciacao,
 (SELECT SUM(D.VALOR)
 FROM TABDEPRECIACAO D
 WHERE D.CODIGOEMPRESA = A.CODIGOEMPRESA AND
 D.CODIGOFILIAL = A.CODIGOFILIAL AND
 D.CODIGOATIVO = A.CODIGO AND
 D.TIPOMOVIMENTO = 1 AND
 D.REFERENCIA <= '12/31/2022') DEPRECIACAOTOTAL,
 (SELECT SUM(D.VALOR)
 FROM TABDEPRECIACAO D
 WHERE D.CODIGOEMPRESA = A.CODIGOEMPRESA AND
 D.CODIGOFILIAL = A.CODIGOFILIAL AND
 D.CODIGOATIVO = A.CODIGO AND
 D.TIPOMOVIMENTO = 3 AND
 D.REFERENCIA <= '12/31/2022') BaixaDepreciacao,
 (SELECT SUM(E.BASECALCULOPIS) 
 FROM TABCREDPISCOFINSIMOBILIZADO E 
 WHERE idmaster = A.idmaster 
 AND 
 CAST(SUBSTRING (mesano FROM 1 FOR 2) AS smallint) >= EXTRACT (month FROM CAST(null AS DATE)) AND 
  CAST(SUBSTRING (mesano FROM 4 FOR 4) AS smallint) >= EXTRACT  (YEAR FROM CAST(null AS DATE)) 

  AND 
 CAST(SUBSTRING (mesano FROM 1 FOR 2) AS smallint) <= EXTRACT (month FROM CAST( '12/31/2022' AS DATE)) AND 
 CAST(SUBSTRING (mesano FROM 4 FOR 4) AS smallint) <= EXTRACT  (YEAR FROM CAST( '12/31/2022' AS DATE)) 

 ) AS VALORPIS, 
(SELECT SUM(E.BASECALCULOCOFINS) 
  FROM TABCREDPISCOFINSIMOBILIZADO E 
  WHERE idmaster = A.idmaster 
 AND 
 CAST(SUBSTRING (mesano FROM 1 FOR 2) AS smallint) >= EXTRACT (month FROM CAST(null AS DATE)) AND 
  CAST(SUBSTRING (mesano FROM 4 FOR 4) AS smallint) >= EXTRACT  (YEAR FROM CAST(null AS DATE)) 

 AND 
 CAST(SUBSTRING (mesano FROM 1 FOR 2) AS smallint) <= EXTRACT (month FROM CAST('12/31/2022'  AS DATE)) AND 
 CAST(SUBSTRING (mesano FROM 4 FOR 4) AS smallint) <= EXTRACT  (YEAR FROM CAST('12/31/2022' AS DATE)) 
 ) AS VALORCOFINS 
 FROM TABATIVOIMOBILIZADO A
 LEFT JOIN TABPLANOCONTAS P
 ON (A.CODIGOCONTACONTABIL = P.CODIGO AND P.CODIGOPLANOCONTAS = 6) 
 left join tabcentrocusto C on a.codigocentrocusto = c.codigoconta and c.codigoplanocustos= 05
 WHERE  A.CODIGOEMPRESA = 1
 and A.CODIGOFILIAL = 1

 and ( (a.SITUACAODOBEM<>1) or (a.situacaodobem = 1 and a.datasituacao > '12/31/2022'))

 and a.dtabertura <= ' '12/31/2022''

 and A.SITUACAODOBEM <> 4

 order by A.CODIGOCONTACONTABIL, coalesce(CODIGOATIVOPRINCIPAL, a.codigo), a.CODIGOATIVOPRINCIPAL, A.CODIGOCONTACONTABIL,  A.CODIGO
 

Link to comment
Share on other sites

  • Moderadores

No Firebird 4.0 pode usar a LAST_DAY()

select last_day(of month from current_date) from RDB$DATABASE

Em versões anteriores pode tentar algo como:

select cast('01.' || extract(month from dateadd(month, 1, current_date)) || '.' || extract(year from dateadd(month, 1, current_date)) as DATE) - 1 from RDB$DATABASE

 

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link to comment
Share on other sites

Não estou conseguindo formatar no sql D.REFERENCIA <= '12/31/2022')

Para fixar sempre como ultima data do mês atual. alguma dica como ficaria no sql. versão 2.5

 

 

 

FROM TABDEPRECIACAO D
 WHERE D.CODIGOEMPRESA = A.CODIGOEMPRESA AND
 D.CODIGOFILIAL = A.CODIGOFILIAL AND
 D.CODIGOATIVO = A.CODIGO AND
 D.TIPOMOVIMENTO = 0 AND 
 D.REFERENCIA <= '12/31/2022'), A.VALORABERTURA) as Abertura,

Link to comment
Share on other sites

  • Membros Pro
12 minutos atrás, consultoria Soft disse:

Não estou conseguindo formatar no sql D.REFERENCIA <= '12/31/2022')

Para fixar sempre como ultima data do mês atual. alguma dica como ficaria no sql. versão 2.5

 

 

 

FROM TABDEPRECIACAO D
 WHERE D.CODIGOEMPRESA = A.CODIGOEMPRESA AND
 D.CODIGOFILIAL = A.CODIGOFILIAL AND
 D.CODIGOATIVO = A.CODIGO AND
 D.TIPOMOVIMENTO = 0 AND 
 D.REFERENCIA <= '12/31/2022'), A.VALORABERTURA) as Abertura,

Olá bom dia,

Você pode fazer da seguinte forma:

--------------------------------------------------------------------------------------------

FROM TABDEPRECIACAO D
 WHERE D.CODIGOEMPRESA = A.CODIGOEMPRESA AND
 D.CODIGOFILIAL = A.CODIGOFILIAL AND
 D.CODIGOATIVO = A.CODIGO AND
 D.TIPOMOVIMENTO = 0 AND 
 D.REFERENCIA <= (select (cast('01.' ||
             extract(month from dateadd(month, 1, current_date)) || '.' ||
             extract(year from current_date) as date) - 1) as ULTIMO_DIA_MES_ATUAL)
from RDB$DATABASE)), A.VALORABERTURA) as Abertura,

 

--------------------------------------------------------------------------------------------

Se estiver em uma SP você pode criar uma variável para receber a informação do select do ultimo dia;

Atenciosamente,

Link to comment
Share on other sites

  • 4 weeks later...

Faça o seguinte:

D.REFERENCIA <= (
   select
      dateadd(
         -1 day to dateadd(
            1 month to cast(extract(year from current_date) || '-' ||
            extract(month from current_date) || '-01' as date)
         )
      )
   from
      RDB$DATABASE
)

Vai solucionar pois:

select
   dateadd(
      -1 day to dateadd(
         1 month to cast(extract(year from current_date) || '-' ||
         extract(month from current_date) || '-01' as date)
      )
   )
from
   RDB$DATABASE

sempre vai retornar o último dia do mês vigente no formato date.

Foi testado na versão 2.5 do FireBird.

Edited by Roberto Henrique Borges Machado
Link to comment
Share on other sites

  • Este tópico foi criado há 816 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.