Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

André Bortolotto

Somar mês em uma data (PostgreSQL)

Recommended Posts

Olá, estou com o seguinte problema...Tenho um select e nesse select tenho um campo data e também tenho um campo inteiro (quantidade de meses(inteiro)). Preciso trazer nesse select esse campo data somado com a quantidades de meses. Alguem tem alguma ideia de como fazer isso?Achei no manual do postgresql a seguinte instrução: "SELECT cast('2004-07-16' AS date) + interval'1 months' AS data", mas não consigo deixar esse " interval'1 months' " dinamico.Obrigado pela atenção!André

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então carinha, o parâmetro para o interval é tratado como uma String, então você pode concatenar ela normalmente ao montar a sua query.Se você está fazendo isso direto pelo banco você pode por exemplo concatenar durante o select com || assim:

SELECT cast('2004-07-16' AS date) + interval '1 ' || aux.intervalo AS dataFROM ( SELECT CAST('DAY' AS VARCHAR) as intervalo) as aux

Notando que o subselect alí pode ser um select em uma tabela qualquer que guarda os intervalos que você quer.Se estiver trabalhando com alguma linguagem de programação você pode simplismente passar o intervalo (sempre dentro de áspas simples para tratar como String) por uma variável quando se constrói a query.

$intervalo = "1 month";$sql = "SELECT cast('2004-07-16' AS date) + interval '".$intervalo."' AS data";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também estou precisando disso, só que eu quero tornar o número dinâmico, ou seja o 1 será substituído por uma coluna do banco de dados. Alguém sabe como é?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ifernand, se eu intendi o que deseja, você terá de usar o explode...

 

$Aux = explode("/", $Data) ;

 

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

 

$Mes = substr($Data,3,2);

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.