Consulta sql

Olá galera…

eu tenho esse select:

"Select trim(concat(p.Nome,' ',p.sobreNome)) AS 'Nome',p.Dtnasc  AS 'Data Nasc' From paciente p Where p.Dtnasc = '"+dtnas+"'"

na dtnas é digitado várias datas exemplo: 1995-06-02, 1975-06-02, 2002-06-15 …

o meu problema é que não mostra a primeira data igual só mostra a segunda data igual

Tem como mostrar as duas datas iguais em uma consulta sql?

Se você quer exibir a data parametro na sua consulta é só selecionar ela junto

"Select trim(concat(p.Nome,' ',p.sobreNome)) AS 'Nome',p.Dtnasc  AS 'Data Nasc', "+dtnas+" AS 'Data Param' From paciente p Where p.Dtnasc = '"+dtnas+"'" 

[quote=luciano@@]Se você quer exibir a data parametro na sua consulta é só selecionar ela junto

"Select trim(concat(p.Nome,' ',p.sobreNome)) AS 'Nome',p.Dtnasc  AS 'Data Nasc', "+dtnas+" AS 'Data Param' From paciente p Where p.Dtnasc = '"+dtnas+"'" 

luciano@@

na verdade eu tenho dois jtables uma mostra todas as datas nascimento da tabela cliente, e o outro jtable aparece a comparacao da tabela cliente dtnasc com a data de hoje, só que aparece o ultimo registro de dois clientes com a mesma data nasc.
Ex: fulano 1985-06-02
ciclano 1975-06-02 // só aparece esse último

eu não como aparecer os dois clentes com as suas respectivas data nasc! tem como?

Como estas datas são armazenadas?

Como elas são inseridas no jTable?

Sem saber isso eu apenas te aconselho a usar o inspect do debug do eclipse(Se você estiver usando eclipse) para verificar se as variaveis estão preenchidas corretamente.

[quote=luciano@@]Como estas datas são armazenadas?

Como elas são inseridas no jTable?

Sem saber isso eu apenas te aconselho a usar o inspect do debug do eclipse(Se você estiver usando eclipse) para verificar se as variaveis estão preenchidas corretamente.[/quote]

PRIMEIRA CONSULTA LISTA TODAS AS DATA NASC DA TABELA PACIENTE

try{
            linhas14.clear();
            colunas14.clear();
            resultado = dados.fazerConsulta("SELECT trim(p.Dtnasc) AS 'Data Nasc' FROM paciente p");
            dados.linhasEColunas(resultado, colunas14, linhas14);
            modeloTable15.setDataVector(linhas14 , colunas14);
        }catch(Exception ex){
                System.out.println(ex.getMessage());
        }

COMPARAÇÃO ENTRE DATAS

        int dias = 5;
        DateFormat dts1 = new SimpleDateFormat("dd/MM");
        Date hoje = new Date();       
        GregorianCalendar gc;

        gc = new GregorianCalendar();
                        
        gc.set(Calendar.DATE, gc.get(Calendar.DATE)+dias);
                
        StringTokenizer st2 = new StringTokenizer(nas, "/");
        String[] elem2 = new String[st2.countTokens()];
        for (int y = 0; st2.hasMoreTokens(); y++) {
                    elem2[y] = st2.nextToken();
        }
        String dias1 = nas.substring(0,2);
        String mess1 = nas.substring(3,5);
     
        if(dtbd.equals(dts.format(hoje))){
                
                System.out.println(dts1.format(hoje)+" "+nas);
                   
                StringTokenizer st1 = new StringTokenizer(dts1.format(hoje), "/");
                
                String[] elem1 = new String[st1.countTokens()];
                
                for (int i = 0; st1.hasMoreTokens(); i++) {
                    elem1[i] = st1.nextToken();
                }
                                                
                if (elem2[0].equals(elem1[0])) {
                    String ano1 = nas.substring(6,10);
                    String dia1 = nas.substring(0,2);
                    String mes1 = nas.substring(3,5);
                    dtnasc = (ano1+"-"+mes1+"-"+dia1);
                }
        }else if(dtbd.equals( dts1.format(gc.getTime()) ) ){
                StringTokenizer st1 = new StringTokenizer(dts1.format(gc.getTime()), "/");
             
                String[] elem1 = new String[st1.countTokens()];
               
                for (int i = 0; st1.hasMoreTokens(); i++) {
                    elem1[i] = st1.nextToken();
                }
                
                if (elem2[0].equals(elem1[0])) {
                    String ano1 = nas.substring(6,10);
                    String dia1 = nas.substring(0,2);
                    String mes1 = nas.substring(3,5);
                    dtnasc = (ano1+"-"+mes1+"-"+dia1);                   
                }
        }

PEGA AS DATAS DE NASCIMENTO DA TABLEA PACIENTE

 for(int i=0; i<jTable15.getRowCount(); i++){
           calculoData(jTable15.getValueAt(i, 0).toString());
           dtnas = getCaluloData();
            
       }

LISTAS AS DATAS NASCIMENTO DA COMPARAÇAO

try{
            linhas13.clear();
            colunas13.clear();
            resultado = dados.fazerConsulta("Select trim(concat(p.Nome,' ',p.sobreNome)) AS 'Nome',p.Dtnasc  AS 'Data Nasc'"+
                                            "From paciente p Where p.Dtnasc = '"+dtnas+"'");           
            dados.linhasEColunas(resultado, colunas13, linhas13);
            modeloTable14.setDataVector(linhas13 , colunas13);            
        }catch(Exception ex){
                System.out.println(ex.getMessage());
        }      

ai estão todos os códigos que implementei para gerar uma consulta que me retornasse a datas de nascimento com cinco dias de antecedencia do aniversário do paciente.

será que ajudou a entender o meu problema?

AH!! Uso o netbeans.

Espera,

Se o objetivo é listar todos os pacientes com suas datas de nascimento com cinco dias de antecedência por que você não faz isso na propria query?

[quote=luciano@@]Espera,

Se o objetivo é listar todos os pacientes com suas datas de nascimento com cinco dias de antecedência por que você não faz isso na propria query?[/quote]

como?

pois, na minha cabeça eu estou pensando algo parecido com isso:

no dia dia aniversatio
28/05 02/06
29/05 02/06
30/05 02/06
31/05 02/06
01/02 02/06

por isso que fiz as comparações.

Não entendi seu exemplo você poderia explicar melhor?

Se o interesse é retornar pacientes com data de aniversário até cinco dias antes da data parametro vocÊ pode fazer

Select * from paciente
where data_nasc between(data_param, data_param - 5 dias)

isso resolve o problema.

[quote=luciano@@]Não entendi seu exemplo você poderia explicar melhor?

Se o interesse é retornar pacientes com data de aniversário até cinco dias antes da data parametro vocÊ pode fazer

Select * from paciente
where data_nasc between(data_param, data_param - 5 dias)

isso resolve o problema.[/quote]

no exemplo, vamos supor que:
hoje é 28/05 quero que apareça a data nascmento "que é " 02/06/1975
amanha dia 29/05 continua aparecendo 02/06/1975
no dia 30/05 continua aparecendo 02/06/1975
e assim por dia até chegar a data do aniversário.

parecido com aquela que tem no orkut.

Então na sua query você seleciona todo mundo que tem data de aniversário entre o dia de hoje e o dia de hoje + 5

EX:

Select data_nasc from paciente
where date(substring(data_nasc,0,6) + year()); between sysdate and sysdate + 5 days

Com essa query você tem todo mundo que está fazendo aniversário nos próximos 5 dias baseado na data atual, na hora de executar da uma olhada no código pq acho que misturei db2 com oracle e com sql server

[quote=luciano@@]Então na sua query você seleciona todo mundo que tem data de aniversário entre o dia de hoje e o dia de hoje + 5

EX:

Select data_nasc from paciente
where date(substring(data_nasc,0,6) + year()); between sysdate and sysdate + 5 days

Com essa query você tem todo mundo que está fazendo aniversário nos próximos 5 dias baseado na data atual, na hora de executar da uma olhada no código pq acho que misturei db2 com oracle e com sql server[/quote]

obrigado pela ajuda vou fazer alguns teste nesse fim de semana e segunda te passo resultado

Só tira o ponto e virgula da função date e da uma revisada nas funções

[quote=luciano@@]Só tira o ponto e virgula da função date e da uma revisada nas funções
[/quote]

fiz algumas modificações no sql que você me passou. tive que fazer assim: primeiro contact (unão) com o dia e mes da data nasc e depois fiz isso com a data do sistema e com a data do sistema mais 6 dias e dai fiz a comparação com between. veja no código abaixo:

Select  trim(concat(p.Nome,' ',p.sobreNome)) AS 'Nome',p.Dtnasc  AS 'Data Nasc'
From paciente p Where concat(month(p.Dtnasc),'-',day(p.Dtnasc) ) between concat(month(SYSDATE()),'-',day(SYSDATE()) ) 
and concat(month(date_add(SYSDATE(),interval 6 day)),'-',day(date_add(SYSDATE(),interval 6 day)) )

O que você achou?

Ah! sei que não é assunto desse tópico, mas você sabe alguma forma de colocar uma animação em flash no java? já olhei o exemplo o livro do Deitel e do google e não consegui fazer funcionar o vídeo.

Cara,

Seu banco é SQL server, eu acho que o SQL server deixa o código SQL muito porco. Tem algumas facilidades mas para fazer operações tipo pegar o ultimo dia do mês é simplesmente horrivel.

Mas vamos a sua duvida, existe uma biblioteca que faz isso, JFlashPlayer, eu nunca usei mas dizem que resolve o problema. Ta ai o site:

http://www.jpackages.com/jflashplayer

[quote=luciano@@]Cara,

Seu banco é SQL server, eu acho que o SQL server deixa o código SQL muito porco. Tem algumas facilidades mas para fazer operações tipo pegar o ultimo dia do mês é simplesmente horrivel.

Mas vamos a sua duvida, existe uma biblioteca que faz isso, JFlashPlayer, eu nunca usei mas dizem que resolve o problema. Ta ai o site:

http://www.jpackages.com/jflashplayer

[/quote]
Não o meu é MySQL. e quanto JFlashPlayer eu já tinha visto ele, mas a versão dele é trial.
Mas muito obrigado pela dicas com o SQL.