Consulta Sql que liste do 1º ao último dia do mes atual
Olá,
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
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
Curtidas 0
Respostas
Alex Lekao
14/02/2014
Oi Leandro, boa tarde!!
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
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
Marisiana Battistella
14/02/2014
Pelo que entendi ele só quer que liste todos os dias do mês atual.
Estava pesquisando pra ver se tem alguma função que faz isso mas não encontrei nada ainda....
Estava pesquisando pra ver se tem alguma função que faz isso mas não encontrei nada ainda....
GOSTEI 0
Leandro Medeiros
14/02/2014
Olá Alex,
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
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
Alex Lekao
14/02/2014
Oi Leandro, bom dia!!!
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
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
Leandro Medeiros
14/02/2014
Olá Alex,
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.
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
Marisiana Battistella
14/02/2014
Existe uma função que retorna o primeiro dia do mês, outra que retorna o último dia do mês e o que ele precisaria é de uma função que retorne todos os dias do mês.
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...
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
Alex Lekao
14/02/2014
Oi Marisiana,
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
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
Marisiana Battistella
14/02/2014
Pois é ... tá complicado isso...
Obrigada pela ajuda! =)
Obrigada pela ajuda! =)
GOSTEI 0
Alex Lekao
14/02/2014
Ja pesquisei bastante e nao achei.
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
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
Leandro Medeiros
14/02/2014
Caramba dev masters!
Achei que essa ia ser facil para vcs ;D.
Eu vou conseguir fazer isso, aguardem....
Achei que essa ia ser facil para vcs ;D.
Eu vou conseguir fazer isso, aguardem....
GOSTEI 0
Marisiana Battistella
14/02/2014
Ainda não sou dev master! \0/ hehehehehe....
Se descobrir como se faz compartilha conosco, por gentileza!
Se descobrir como se faz compartilha conosco, por gentileza!
GOSTEI 0
Alex Lekao
14/02/2014
OI Bom dia!!!
Eu to longe de ser um.... rsrsr
Mas conseguindo posta ae para conhecimento da galera.
Abraco.
Alex - Lekao
Eu to longe de ser um.... rsrsr
Mas conseguindo posta ae para conhecimento da galera.
Abraco.
Alex - Lekao
GOSTEI 0
Deivison Melo
14/02/2014
dá uma olhada nesse post, pode ser que ajude...
[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
[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
Deivison Melo
14/02/2014
Dá uma olhada nesse post, pode ser que ajude!!
[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
[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
Marisiana Battistella
14/02/2014
Achei!!!
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:
Ou:
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
Leandro Medeiros
14/02/2014
Esse código retorna todos os dias do mes atual, agora tem que terminar para funcionar do jeito que preciso, mas já é um começo.
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
Alex Lekao
14/02/2014
Blz...
eh isso ae...
se nao me engano esse codigo eh de uma procedure.
Acredito que essa seria mesmo umas das formas de fazer.
Boa sorte.
Conseguindo finalizar, posta ai para ajudar alquem que possa ter o mesmo problema.
Abraco.
Alex - Lekao
eh isso ae...
se nao me engano esse codigo eh de uma procedure.
Acredito que essa seria mesmo umas das formas de fazer.
Boa sorte.
Conseguindo finalizar, posta ai para ajudar alquem que possa ter o mesmo problema.
Abraco.
Alex - Lekao
GOSTEI 0
Nicolas Paulino
14/02/2014
Para trazer o ultimo dia do mês atual no Firebird 1.5 utilizando UDF:
SELECT
CAST(UDF_MONTHEND(UDF_YEAR(CURRENT_DATE),UDF_MONTH(UDF_INCMONTH(CURRENT_DATE,1))) AS DATE)
FROM
RDB$DATABASE
SELECT
CAST(UDF_MONTHEND(UDF_YEAR(CURRENT_DATE),UDF_MONTH(UDF_INCMONTH(CURRENT_DATE,1))) AS DATE)
FROM
RDB$DATABASE
GOSTEI 0