Ir para conteúdo
josePeixoto

Converter data do java para data Oracle

Recommended Posts

Olá a todos. Estou com um problema em converter a data do java para o formato da data do oracle.

Eis o meu código:

 

SimpleDateFormat sdf = new SimpleDateFormat("dd/mm/yyyy");

String dt_ini_orc = sdf.format(dt_ini);
String dt_fim_orc = sdf.format(dt_fim);

List<NotaFiscal> nf = nfs.retornaTodasNfPorData(dt_ini_orc, dt_fim_orc);

E a função que pega é:

 

public List<NotaFiscal> retornaTodasNfPorData(String dt_ini, String dt_fim) throws SQLException {
		List<NotaFiscal> lnf = new ArrayList<NotaFiscal>();
		Connection conn = null;
		PreparedStatement stmt = null;
		
		
		
		try {
			conn = getConnection();
			stmt = conn.prepareStatement(
					"select NR_SEQUENCIA, CD_NATUREZA_OPERACAO, cd_cgc_emitente, nr_sequencia, dt_emissao, "
							+ "vl_total_nota from nota_fiscal "
							+ "WHERE dt_emissao between to_date(?, 'dd/mm/yyyy') and to_date(?, 'dd/mm/yyyy')");
			
			stmt.setString(1, dt_ini);
			stmt.setString(2, dt_fim);
			
			
			ResultSet rs = stmt.executeQuery();

			while (rs.next()) {
				NotaFiscal nf = createNF(rs, conn);
				lnf.add(nf);
			}

			rs.close();
.
.
.

Dá o seguinte erro: java.lang.IllegalArgumentException: Cannot format given Object as a Date at java.text.DateFormat.format(Unknown Source)

 

Alguém pode me ajudar informando onde está errado?

 

Obrigado desde já :D

Compartilhar este post


Link para o post
Compartilhar em outros sites
20 horas atrás, josePeixoto disse:

NotaFiscal nf = createNF(rs, conn);

 

Você não postou o método "createNF"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Falcon89
      Antes de minha dúvida, deixo algumas considerações:
      - Estou em nível de aprendizagem, então, talvez a idéia e o script possa parecer bem "amador"
      - A dúvida não corresponde nada a função ou biblioteca Date, o ano utilizado é ficticio, no caso começando no ano de valor 1;
      - A minha dúvida se relaciona a POO, a utilização do Python como ilustração é meramente ilustrativa.

       

      Vamos a dúvida:
      Então eu criei uma classe chamada tempo com atributo ano, e uma classe pessoa com apenas os atributos em questão, a data de nascimento e a idade. O que eu queria que acontecesse, se possivel, era que ao instanciar uma nova pessoa, ela pegasse o ano atual do objeto 'tempo' já instanciado, e jogasse como ano de nascimento, e já setasse a idade da pessoa, subtraindo o ano atual do objeto tempo pela data de nascimento, fica meio confuso para explicar vou tentar dar um exemplo:
      Supondo que criei o 'tempoObj', que tem o valor do 'tempoObj.ano=1', nesse periodo eu instancio um objeto 'pessoaObj', então eu queria que essa pessoa pegasse o valor do ano que no caso seria 1 e jogasse na "pessoaObj.data_nascimento"que agora teria o valor de 1 e ano atual que também seria o mesmo valor e já setando atravéz da subtração a 'pessoaObj.idade' como 0, em tempo de execução, chamando a funçao avancar_ano() umas 3 vezes, o valor do ano atual seria 'tempoObj.ano = 4', nesse caso a idade dessa pessoa teria que seria 3, porem ao passar "tempoObj.ano" como argumento para data de nascimento e ano atual, ele sempre irá passar o mesmo valor para ambos fazendo com que a idade sempre seja 0.
       Nesse caso existe alguma forma que o valor seja passado para o metodo data_nascimento, some ao instanciar a classe pessoa, e o que o valor recebido so ano do tempoObj seja correspondente ao ano que esta armazenado no tempoObj.ano no momento de execução.
      Já tentei varias formas e sempre chego na mesma, se ficou entendido a questão e se é que existe uma solução, alguém tem essa solução? Desde já agradeço, e peço desculpa se não fui tão claro ao apresentar o problema. 
    • Por Claudia França
      Pessoal preciso de uma ajuda para fazer funcionar normalmente a ação depois que a pessoa faz a doação. E deveria carregar uma mensagem com as informações da transação mas a pagina trava. 
       
       

    • Por manoelahech
      Boa noite pessoal, estou a mais de 3 semanas com um trabalho e está impossivel resolver. Segue a questão
      // Escreva um programa que leia 4 arquivos de numeros inteiros, calcule a média.
      //Mostre o maior quadrado que seja menor que a média de todos os números maiores que a média dos números de cada um dos arquivos.
      //Ex: Média dos números do arquivo 01 = 35
      //Números do arquivo 01 que são maiores que 35 = Ni...Nn
      //Maior quadrado entre os N números do arquivo 01 = x.
      A baixo vou colocar 2 tentativas que não saem da parte de calcular a media, como posso calcular a segunda parte??
      TENTATIVA 01
      #include <stdio.h>
      #include <stdlib.h>
      main(){

      FILE *numeros, *maior, *menor, *medio;
      int numero;
      float media;
      //abertura dos arquivos
      numeros = fopen ("numeros.txt", "r");
      maior = fopen ("maior.txt", "w" );
      medio = fopen ("medio.txt" , "w");
      menor = fopen ("menor.txt" , "w");
      //leitura dos dados e gravação do arquivo 
      while (fscanf (numeros , "%i %f" , &numero , &media)!= EOF){
      if (media >= 6)
      fprintf (maior,"%i %4.1f\n",numero,media);
      else
      fprintf (medio,"%i %4.1f\n",numero,media);

      //fechando os arquivos
      fclose (numeros);
      fclose (maior);
      fclose (medio);
      fclose (menor);
      }
      TENTATIVA 02 (ACHO QUE A MELHOR)
      #include <stdio.h>
      #include <stdlib.h>
      #include <string.h>
      #include <stdlib.h>
      #define TAM_MED 50  //tamanho na média
      #define M 4 //número de arquivos
      #define TRUE 1
      #define FALSE 0

      int leitura( int id, int medi){
          
          int id_num, id_num2, id_num3, id_num4;
          int med;
          
          FILE* numeros = fopen ("numeros.txt","r");
          FILE* numeros2 = fopen ("numeros2.txt", "r");
          FILE* numeros3 = fopen ("numeros3.txt", "r");
          FILE* numeros4 = fopen ("numeros4.txt", "r");
          
          
          
          if (numeros != NULL){
              while (fscanf(numeros, "%d\n", &id_num, med) != EOF){  //End of file
                  printf("%d\n", id_num, med);
              }
              
                  if (numeros != NULL){
              while (fscanf(numeros2,"%d\n", &id_num2,med) != EOF){  //End of file
                  printf("%d\n", id_num2,med);
              }
              
                      if (numeros != NULL){
              while (fscanf(numeros3,"%d\n", &id_num3,med) != EOF){  //End of file
                  printf("%d\n", id_num3,med);
              }
              
                  if (numeros != NULL){
              while (fscanf(numeros4,"%d\n", &id_num4,med) != EOF){  //End of file
                  printf("%d\n", id_num4,med);
              }
          }
         fclose (numeros);
         fclose (numeros2);
         fclose (numeros3);
         fclose (numeros4);
         
         return 0;
      }
      }
      }
      }
      int main(){
          
          int id_num, id_num2, id_num3, id_num4;
          
          printf("Digite o primeiro numero: %d");
          scanf("%d", &id_num);
          printf("Digite o segundo numero: %d");
          scanf("%d", &id_num2);
          printf("Digite o terceiro numero: %d");
          scanf("%d", &id_num3);
          printf("Digite o quarto numero: %d");
          scanf("%d", &id_num4);
          
             printf("Media: %f", (float) (id_num + id_num2+ id_num3+ id_num4)/4);
             return 0;
             
             
      }
       
    • Por Ricardo de Souza Rodrigues
      Prezados,  boa tarde. 

      Tenho o seguinte script que me apresenta uma lista com todos os pacientes que tiveram mais de uma passagem por determinado setor.  Abaixo segue exemplo de 4 registros do resultado:
       
      11/2018    60574    211701    12/11/2018      01/11/2018      14/11/2018  
      11/2018    61038    211701    21/11/2018      01/11/2018      22/11/2018 
      10/2018    59506    208314    25/10/2018      01/10/2018      27/10/2018  
      10/2018    59703    208314    28/10/2018      01/10/2018      29/10/2018  
       
      Como podem ver tenho dois registros do atendimento 211701 e dois registros do atendimento 208314, cada um com um código de movimentação único (significando que o segundo registro é uma reinternação). 

      A minha necessidade é apresentar apenas o registro de reinternação que for em no máximo 2 dias, ou seja, a data da reinternação (DT_MOV_INT ) tem que ser menor que a data da liberação da primeira entrada (DT_LIB_MOV ) + 2 (DT_MOV_INT < DT_LIB_MOV + 2). 
       
      SELECT       TO_CHAR(MI.DT_MOV_INT,'MM/YYYY') MES     ,MI.CD_MOV_INT     ,MI.CD_ATENDIMENTO      ,MI.DT_MOV_INT     ,MI.HR_MOV_INT     ,MI.DT_LIB_MOV FROM MOV_INT MI   INNER JOIN      (     SELECT          --COUNT(M.CD_ATENDIMENTO),         M.CD_ATENDIMENTO     FROM  MOV_INT M        INNER JOIN LEITO L         ON M.CD_LEITO = L.CD_LEITO       INNER JOIN UNID_INT U         ON L.CD_UNID_INT = U.CD_UNID_INT     WHERE          U.CD_UNID_INT = 67         AND M.CD_ATENDIMENTO IS NOT NULL         AND M.CD_LEITO_ANTERIOR NOT IN (243,242,166,165,164,163,162,161,160,159)         AND M.CD_LEITO_ANTERIOR IS NOT NULL     GROUP BY M.CD_ATENDIMENTO     HAVING COUNT(M.CD_ATENDIMENTO) > 1     ORDER BY M.CD_ATENDIMENTO DESC     ) ATEND      ON MI.CD_ATENDIMENTO = ATEND.CD_ATENDIMENTO     INNER JOIN LEITO L -- tabela de leitos      ON MI.CD_LEITO = L.CD_LEITO     INNER JOIN UNID_INT U -- tabela de unidades de internação      ON L.CD_UNID_INT = U.CD_UNID_INT WHERE U.CD_UNID_INT = 67  AND MI.CD_ATENDIMENTO IS NOT NULL  AND MI.CD_LEITO_ANTERIOR NOT IN (243,242,166,165,164,163,162,161,160,159)  AND MI.CD_LEITO_ANTERIOR IS NOT NULL ORDER BY 3 DESC;  
    • Por nicolasbessa
      Boa tarde!
       
      Como aplicar a regra abaixo em um select?

      Regra Join
      Quando o campo substr(x, 1,1)  ='1'
      montar a chave de pesquisa:
      y = '8' AND y1 =  'L'||lpad( x1, 2)) 

      Quando o campo substrt(x, 1,1) for igual ='A'
      montar a chave de pesquisa:
      y = '8' AND y1 =  'M'||lpad( x1, 2)) 
       
      obrigado!
×

Informação importante

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