Bom dia.
Sei que este fórum não é sobre banco de dados Oracle, porém irei utilizar este select em um programa Java.
A minha desculpa é essa para postar aqui minha dúvida auahuhuah
Então, quero comparar duas datas.
Exemplo:
Tenho uma coluna que me retorna uma string com uma data = "04/02/2011 00:00:00.000".
Quero transformar esta String em uma data.
Após isto, quero recuperar todas as linhas existentes em "sysdate - 30" desta data.
Resumindo:
"04/02/2011 00:00:00.000" > (sysdate - 30)
Quero fazer esta comparação, porém já tentei de TODAS as maneiras e nada.
Bom dia.
Sei que este fórum não é sobre banco de dados Oracle, porém irei utilizar este select em um programa Java.
A minha desculpa é essa para postar aqui minha dúvida auahuhuah
Então, quero comparar duas datas.
Exemplo:
Tenho uma coluna que me retorna uma string com uma data = "04/02/2011 00:00:00.000".
Quero transformar esta String em uma data.
Após isto, quero recuperar todas as linhas existentes em "sysdate - 30" desta data.
Resumindo:
"04/02/2011 00:00:00.000" > (sysdate - 30)
Quero fazer esta comparação, porém já tentei de TODAS as maneiras e nada.
Alguém pode me dar uma luz por favor.
Abraços!
Oi,
O certo era você postar esse tópico na parte de Persistência de Dados, JDBC e afins, mas tá valendo. rs
Bom, se você quer comparar só as datas, você pode fazer da seguinte maneira:
SelectblablablaFromblablablaWhere// Pode usar o Trunc, que retorna dd/MM/yyyy...Trunc(SeuCampoDeData)>Trunc(SysDate-30)// ou o To_Date, que faz o mesmo do Trunc...To_Date(SeuCampoDeData)>To_Date(SysDate-30)// ou até To_Char, que retorna dd/MM/yy!To_Char(SeuCampoDeData)>To_Date(SysDate-30)
Testa e nos dá o reply aí!
Abraços
criador
Já havia feito todas as opções.
Deixa eu explicar melhor.
Tenho uma coluna CLOB que contém um XML.
Através de uma função que tenho aqui, consigo capturar dentro deste XML o conteúdo que quero.
Este conteúdo eu jogo dentro do to_char() porque o to_char recebe por parâmetro um CLOB.
Ok.
Desta forma tenho minha data:
to_char(FUNCAO(Xml,'Tag_Data');
Neste momento já tenho a data.
Agora preciso transformá-la em data para posterior comparação com o “sysdate - 30”.
Consigo transformar em data usando o to_date(), porém quando vou comparar, o Oracle informa ORA-01861: o literal não corresponde à string de formato.
Preciso converter o formato da data para dd/mm/yyyy para poder comparar com o sysdate ???
Ou utilizo o mesmo formato que o sysdate usa?
Espero ter sido claro.
Abraços!
Nicolas_Fernandes
criador:
Já havia feito todas as opções.
Deixa eu explicar melhor.
Tenho uma coluna CLOB que contém um XML.
Através de uma função que tenho aqui, consigo capturar dentro deste XML o conteúdo que quero.
Este conteúdo eu jogo dentro do to_char() porque o to_char recebe por parâmetro um CLOB.
Ok.
Desta forma tenho minha data:
to_char(FUNCAO(Xml,'Tag_Data');
Neste momento já tenho a data.
Agora preciso transformá-la em data para posterior comparação com o "sysdate - 30".
Consigo transformar em data usando o to_date(), porém quando vou comparar, o Oracle informa ORA-01861: o literal não corresponde à string de formato.
Preciso converter o formato da data para dd/mm/yyyy para poder comparar com o sysdate ???
Ou utilizo o mesmo formato que o sysdate usa?
Espero ter sido claro.
Abraços!
Bom, se fosse eu, converteria as duas datas para um formato igual, para evitar esses problemas de comparação.
Eu converteria da seguinte forma:
Que tal? As duas datas estão sendo convertidas para um mesmo formato, evitando erros de comparação.
Testa aí!
criador
Se eu comparar com to_char eu estarei comparando String e não Data.
Por isso que preciso transformar minha String em Data.
Abraços!
Nicolas_Fernandes
criador:
Se eu comparar com to_char eu estarei comparando String e não Data.
Por isso que preciso transformar minha String em Data.
Abraços!
Select
Case
When to_date('01/01/2001') > trunc(sysdate) Then 'Greater than sysdate!'
When to_date('01/01/2001') <= trunc(sysdate) Then 'Lesser than sysdate!'
End Data
From dual
Que tal assim?
Você pode trocar o '01/01/2001' por sua função de retornar a data lá do XML!
criador
É EXATAMENTE isto que estou fazendo.
E não roda!
Nicolas_Fernandes
criador:
É EXATAMENTE isto que estou fazendo.
E não roda!
Descobre como tá vindo o resultado do seu XML. Será que tá vindo no formato certo? Confere se tá vindo com hora, também, pra gente ter uma ideia certinho!
gfkauer
Select Sysdate
From dual
Where trunc(to_date('01/02/2011 00:00', 'dd/mm/rrrr hh24:mi')) > trunc(Sysdate - 30)
Tente dar trunc na sua data e no sysdate, deixando as duas com a mesma estrutura.
criador
Rapaziada, valeu mesmo pelo ajuda.
O problema não estava na formatação da data e sim nos dados contidos na tabela que estou usando para este select.
Haviam linhas no formato 2011/02/04 00:00:00.000 e outras no formato 04/02/2011 00:00:00.000.
Além disso, haviam também linhas com 1 espaço a mais entre a data e a hora, ou seja, com 2 espaços.
Desta forma, a máscara NUNCA iria bater com todas as linhas.