Fórum Consulta Sql que liste do 1º ao último dia do mes atual #470036
14/02/2014
0
Eu consigo buscar o primeiro e o último dia do mes atual dessa maneira:
SELECT DATEADD(1 - EXTRACT(DAY FROM CURRENT_DATE) DAY TO CURRENT_DATE ) first_day FROM RDB$DATABASE
UNION
SELECT DATEADD(-EXTRACT(DAY FROM DATEADD(1 MONTH TO CURRENT_DATE )) DAY TO DATEADD(1 MONTH TO CURRENT_DATE)) last_day FROM RDB$DATABASE
Result:
01/02/2014
28/02/2014
Mas eu gostaria que fosse listado também os demais dias do mes atual (2,3,4,5...27)
Qualquer ajuda será bem vinda.
Abraço.
Leandro
Leandro Medeiros
Curtir tópico
+ 0Posts
14/02/2014
Alex Lekao
Eu nao entendi, vc quer montar em ordem, como se fosse uma coluna com as datas do dia 01 ate 28?
Ou vc quer que em coluna aparecem do dia 01 ao 28, no caso seriam 28 colunas?
Nao sei se o Firebird tem isso, mas no sql server normalmente usa-se CTS que ou uma funcao para fazer essa situacao.
No caso de colunas no firebird se nao me engano nao faz pivot, e com a CTS vc conseguiria montar o Pivot e exibir o resultado que apresentaria em linhas como colunas.
Abraco.
Alex - Lekao
Gostei + 0
14/02/2014
Marisiana Battistella
Estava pesquisando pra ver se tem alguma função que faz isso mas não encontrei nada ainda....
Gostei + 0
14/02/2014
Leandro Medeiros
Obrigado pela resposta ;D.
O que eu quero é fazer um Left Join do resultado dessa consulta com a tabela de faturamento, assim eu saberei quais dias não teve vendas no mes atual.
Eu sei que no SQL Server isso é possível porque eu já fiz.
Então, para exemplificar melhor, posso desenhar melhor o problema assim:
Resultado da query dos dias do mes:
01/02/2014
02/02/2014
03/02/2014
...
28/02/2014
left join tabela de faturamento....
resultado final
01/02/2014 R$ 100,00
02/02/2014 R$ 0,00
03/02/2014 R$ 500,00
...assim por diante.
Você ainda não viu algo parecido no firebird?
Obrigado.
Leandro
Gostei + 0
17/02/2014
Alex Lekao
Desculpe a demora.
DEixa eu ver se entendi, vc tem uma tabela com todos os dias do mes, seguencialmente sem furos, e quer fazer o join desta tabela com a tabela de faturamento sua?
Eles tem algum campo em comum que a gente possa usar com referencia/ link entre eles?
Se tiver, teriamos que usa-lo para fazer o join.
Agora se for somente as datas acredito que tera que ser feito algum "recurso tecnico" para trazer do jeito que vc precisa, possivelmente uma subselect.
Me desculpe nao ajudar mais, mas para mim ainda ficou meio vago.
TAlves com as estruturas das tabelas consigamos ajudar melhor.
Abraco.
Alex - Lekao
Gostei + 0
17/02/2014
Leandro Medeiros
Não é exatamente isso ...
Como eu havia postado anteriormente, essa é a consulta que eu consegui fazer:
SELECT DATEADD(1 - EXTRACT(DAY FROM CURRENT_DATE) DAY TO CURRENT_DATE ) first_day FROM RDB$DATABASE
UNION
SELECT DATEADD(-EXTRACT(DAY FROM DATEADD(1 MONTH TO CURRENT_DATE )) DAY TO DATEADD(1 MONTH TO CURRENT_DATE)) last_day FROM RDB$DATABASE
Result:
01/02/2014
28/02/2014
Eu preciso além dessas duas datas (1º dia do mês e último dia do mês atual) os demais dias do mês atual, então o resultado da minha consulta teria de ficar assim:
Result:
01/02/2014
02/02/2014
03/02/2014
...
28/02/2014
Como vc pode ver, é simplesmente uma query que liste todos os dias do mês a partir de RDB$DATABASE .
Abraço.
Gostei + 0
17/02/2014
Marisiana Battistella
Conhece alguma, Alex?
Estava pesquisando pra ver se existe alguma função que faz isso, infelizmente não consegui encontrar nada que possa ajudar.
Se alguém tiver alguma alternativa para apresentar, também tenho interesse em saber...
Gostei + 0
17/02/2014
Alex Lekao
Em firebird ainda nao encontrei, ja vi esse tipo de duvida no forum, bem similar, com outras particularidades, e nao tinha.
Ja vi funcoes para fazer algo parecido com SQL Server, usando CTS.
Talvez de para fazer usando while, mas meu conhecimento eh muito limitado para tanto. rsrsr
Eu ate tenho um banco firebird aqui, mas nao tenho ideia de como montar.
Infelizmente vou ficar devendo essa. =/
Abraco.
Alex - Lekao
Gostei + 0
17/02/2014
Marisiana Battistella
Obrigada pela ajuda! =)
Gostei + 0
17/02/2014
Alex Lekao
Eu acredito que se for possivel usar o While no firebird na montagem do codigo acho que atenda.
Mas se precisar de alguma coisa, eh so falar, estou sempre aqui e a disposicao.
Embora acredite que eu va ajudar bem poquinho pelo nivel de conhecimento que tenho. rsrsr
Abraco.
Alex - Lekao
Gostei + 0
17/02/2014
Leandro Medeiros
Achei que essa ia ser facil para vcs ;D.
Eu vou conseguir fazer isso, aguardem....
Gostei + 0
17/02/2014
Marisiana Battistella
Se descobrir como se faz compartilha conosco, por gentileza!
Gostei + 0
18/02/2014
Alex Lekao
Eu to longe de ser um.... rsrsr
Mas conseguindo posta ae para conhecimento da galera.
Abraco.
Alex - Lekao
Gostei + 0
18/02/2014
Deivison Melo
[url]https://www.devmedia.com.br/forum/criar-view-para-saber-todas-as-segundas-e-tercas-do-ano/455952[/url]
Abração e bons códigos
Gostei + 0
24/02/2014
Marisiana Battistella
Não sei se tem essa função no Firebird, não tenho ele instalado pra testar...
Mas, no PostgreSQL temos a função generate_series que retorna os dias entre duas datas, com o intervalo especificado.
Para obter os dias do mês atual:
SELECT *
FROM generate_series(date_trunc('month',current_date),
date_trunc('month',current_date) + INTERVAL'1 month' - INTERVAL'1 day',
INTERVAL'1 day');
Ou:
SELECT *
FROM generate_series(DATE'2012-12-01',DATE'2012-12-31',INTERVAL'1 day');
Gostei + 0
25/02/2014
Leandro Medeiros
set term ^ ;
EXECUTE BLOCK
RETURNS (
D DATE
)
AS
DECLARE VARIABLE DATAI DATE;
DECLARE VARIABLE DATAF DATE;
BEGIN
DATAI = (SELECT DATEADD(1 - EXTRACT(DAY FROM CURRENT_DATE) DAY TO CURRENT_DATE ) FROM RDB$DATABASE);
DATAF = (SELECT DATEADD(-EXTRACT(DAY FROM DATEADD(1 MONTH TO CURRENT_DATE )) DAY TO DATEADD(1 MONTH TO CURRENT_DATE)) FROM RDB$DATABASE);
D = DATAI;
WHILE (D <= DATAF) DO
BEGIN
--COLOCAR O SELECT AQUI
SUSPEND;
D = D + 1;
END
END^Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)