Pergunta

Estou executando o abaixo consulta, ele me retorna o row.However em branco há registros na tabela com upd_time = '12 -Mar-08'.I não entendo por que ele não está retornando a data '12 - MAR-08'.Please me ajudar ??

SELECT br_data.upd_time DE BANKREC.br_data onde br_data.upd_time = '12 -Mar-08' ;

Foi útil?

Solução

i não têm acesso a um db oracle no momento, mas eu me lembro usando to_char.

try

SELECT br_data.upd_time FROM BANKREC.br_data where to_char(br_data.upd_time, 'DD-MON-YY') = '12-MAR-08';

Outras dicas

É provável que upd_time não é exatamente 12-MAR-08. O formato de data não está mostrando o componente de tempo, mas é provavelmente lá (tipo de dados DATE no Oracle pode conter ambos os componentes de data e hora).

Tente isto (que irá permitir que você veja os componentes de tempo):

alter session set nls_date_format='DD-MON-YY HH24:MI:SS';

SELECT br_data.upd_time FROM BANKREC.br_data
where br_data.upd_time >= to_date('12-MAR-08','DD-MON-YY')
and br_data.upd_time < to_date('13-MAR-08','DD-MON-YY');

É a mesma coisa se você fizer um

SELECT br_data.upd_time FROM BANKREC.br_data 
       where trunc(br_data.upd_time) = '12-MAR-08';

Pode ser que o upd_time não é uma data, mas um timestamp, então na verdade ele contém, por exemplo, '12 -Mar-08 05:30' o que não seria a mesma coisa. trunc() remove a parte de tempo do timestamp.

Uma vez que ele não retorna um erro, presumo que ele analisa a data corretamente, mas por outro lado você poderia tentar com to_date('12-MAR-08','DD-MON-YY')

Você deve usar a função da Oracle para converter a cadeia corretamente em uma data usando

to_date('12-MAR-08', 'DD-MMM-YY')

Em seguida, você tem que levar em conta que a "Data" A Oracle tipo de dados também contém informações de tempo para o segundo mais próximo. Isto significa que a data em que foi construído na primeira etapa é realmente meia-noite de 12 de março. Então você tem que ter certeza que o upd_time é truncado para a meia-noite:

trunc(upd_time, 'DAY') = to_date('12-MAR-08', 'DD-MMM-YY')

A sua consulta completa torna-se

SELECT br_data.upd_time 
FROM BANKREC.br_data 
WHERE trunc(upd_time, 'DAY') = to_date('12-MAR-08', 'DD-MMM-YY');

Existem outras maneiras de esfolar este gato (você pode transferir a sua coluna updTime a um campo de char adequada com to_char(upd_time, 'DD-MMM-YY')), mas é geralmente fazem aconselhável os dados que você está procurando semelhante ao que você pode encontrar no banco de dados que os aumentos suas chances de usar um índice para a pesquisa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top