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.
[quote=criador]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![/quote]
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:
Select
blablabla
From
blablabla
Where
// 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)
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?
[quote=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![/quote]
Bom, se fosse eu, converteria as duas datas para um formato igual, para evitar esses problemas de comparação.
Eu converteria da seguinte forma:
[quote=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![/quote]
[code]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[/code]
Que tal assim?
Você pode trocar o ‘01/01/2001’ por sua função de retornar a data lá do XML!
[quote=criador]É EXATAMENTE isto que estou fazendo.
E não roda![/quote]
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!
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.