Ir para conteúdo

POWERED BY:

Arquivado

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

bdexterholland

Correção de uma POG de DB

Recommended Posts

beleza, galera tô meio sumido, tem faltado tempo, agora eu apareço jogando um probleminha para vocês me ajudarem.....

 

 

é o seguinte, tenho uma tabela onde o campo data foi dividido em 3, um para o dia, outro para o mes e outro para o ano. Eu preciso construir um select que retorne os registros que estejam com a data entre um intervalo x para o relatório. Alguém consegue me ajudar nessa, pois não sou assíduo de SQL...

 

 

Segue a ddl da tabela

 

 

[font="Tahoma"][color="#000000"]CREATE TABLE `examemarcado` (`nomeexame` varchar(50) default NULL,`NCNS` varchar(18) default NULL,`tipoexame` varchar(40) default NULL,`dia` int(11) default NULL,`mes` int(11) default NULL,`ano` int(11) default NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1;
[/color][/font]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode fazer usando o comando CAST e junto usando a concatenação de strings ||, algo como:

 

SELECT nomeexame, cast((mes || '/' ||dia || '/' || ano) AS Date) AS DATA
FROM examemarcado
WHERE cast((mes || '/' ||dia || '/' || ano) AS Date) BETWEEN '12/01/2007' AND '12/15/2007'

 

Somente precisa ver como funciona para o seu BD...

Compartilhar este post


Link para o post
Compartilhar em outros sites

que a query retorne algo assim:

SELECT *
FROM examemarcado
WHERE (mes || '/' || dia || '/' || ano) BETWEEN '01/01/2007' AND '30/06/2007'

Porém, ele não filtrou direito pois retornou todos os registros e ainda gerou warnings como "TRUNCATED INCORRECT DOUBLE VALUE: '30/06/2007'"

 

Estou trabalhando com o MySQL 5 conectado ao delphi pelo ado que está usando o driver ODBC do MySQL...

 

Faz alguma idéia?

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.