Ir para conteúdo

POWERED BY:

Arquivado

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

Ricardo S.A.

DATE_ADD com INTERVAL YEAR_MONTH não aceita variaveis nos valores

Recommended Posts

Prezados,

 

Estou tendo dificuldade com uma query. Vejam esse exemplo, que funciona corretamente:

 

SELECT *

FROM produto, validade

WHERE produto.datadeproducao < DATE_ADD( produto.datadeproducao, INTERVAL '2-6' YEAR_MONTH )

 

Mas se eu tentar o seguinte, não funciona:

 

SELECT *

FROM produto, validade

WHERE produto.datadeproducao < DATE_ADD( produto.datadeproducao, INTERVAL 'validade.anos-validade.meses' YEAR_MONTH )

 

Os valores retornados por validade.* são INT... O que está errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tabela simples, para testes:

 

CREATE TABLE IF NOT EXISTS validade (
  id int(3) NOT NULL auto_increment,
  ano tinyint(3) unsigned ,
  mes tinyint(3) unsigned ,
  pdate date ,
  PRIMARY KEY (id)
);

dados fictícios

 

INSERT INTO validade VALUES("1", "1", "2", "2009-01-01");
INSERT INTO validade VALUES("2", "0", "6", "2008-07-05");
INSERT INTO validade VALUES("3", "0", "5", "2008-08-06");
INSERT INTO validade VALUES("4", "0", "3", "2008-01-01");

 

1. teste de consistência

 

SELECT 
	id,
	pdate,
	ano,
	mes,
	DATE_ADD( pdate, INTERVAL CONCAT(ano,'-',mes) YEAR_MONTH ) as DateExpire
FROM 
	validade

 

2. exemplo de filtragem, usando CONCAT para juntar os valores do campos

SELECT 
	*
FROM 
	validade
WHERE 
	  pdate < DATE_ADD( pdate, INTERVAL CONCAT(ano,'-',mes) YEAR_MONTH )

 

 

3. filtrando os produtos dentro do prazo de validade:

SELECT 
	*
FROM 
	validade
WHERE 
	  NOW() < DATE_ADD( pdate, INTERVAL CONCAT(ano,'-',mes) YEAR_MONTH )

 

referências:

http://dev.mysql.com/doc/refman/5.1/en/dat...nction_date-add

http://dev.mysql.com/doc/refman/5.1/en/str...function_concat

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.