Select em Access p/ Oracle

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
  

Mensagemem Seg, 19 Jun 2006 12:00 pm

Bom dia Pessoal,

Alguém poderia me ajudar com este select. Tenho um select que funciona perfeitamente para access. Como converter para oracle?

Veja abaixo:

Código: Selecionar todos
Select * From Cadastro WHERE dateDiff('s',
(Mid(Format([Data],'00000000'),7,2)+'/'+Mid(Format([Data],'00000000'),5,2)+'/'+Mid(Format([Data],'00000000'),1,4)+'
'+Mid( Format([Hora],'000000'),1,2)+':'+Mid(
Format([Hora],'000000'),3,2)+':'+Mid( Format([Hora],'000000'),5,2)),now()) > (Minuto * 60) ORDER BY Data, Hora


O campo Data e do tipo int (armazeno a data como yyyymmdd)
O campo Hora e do tipo int (armazeno a hora como hhmmss)
O campo Minuto e do tipo int

Transformo a data e hora do banco para dd/mm/yyyy hhmmss e subtraio com a data/hora atual. Esta diferença deverá ser maior que o campo em minutos.

obrigada

Nadia
Nadia Teles
Localização: São Caetano do Sul

Mensagemem Seg, 19 Jun 2006 12:26 pm

O problema é que você está usando funções específicas do Access.
Exemplo:
MID, DateDiff, Format, [campos] com [] entre eles... Isso tudo não é compatível com Oracle. Creio que MID é equivalente ao SUBSTR do Oracle. Pra concatenar é || e não +. E por aí vai.

Tente o seguinte:
Código: Selecionar todos
Select *
from cadastro
where
  SYSDATE -  to_date(data||hora, 'yyyymmddhhmiss') > minuto * 60
order by data, hora
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered

Mensagemem Seg, 19 Jun 2006 1:19 pm

Quando executo o select abaixo, ele não está concatenando os dois campos (Data e Hora) e nem formatando para yyyymmddhhmiss . Ele apresenta somente a data:

Select to_date(Data || Hora, 'yyyymmddhhmiss') From Cadastro

Retorno:

19/06/06

O que pode estar errado?

obrigada

Nádia
Nadia Teles
Localização: São Caetano do Sul

Mensagemem Seg, 19 Jun 2006 1:45 pm

Você está usando o SQL*Plus pra testar ?
Se sim, lembre-se que o SQL*Plus não mostra as datas no formato de hh:mm como você quer.
Veja o exemplo abaixo:
Código: Selecionar todos
SQL> SELECT SYSDATE FROM DUAL;

SYSDATE
---------
19-JUN-06

SQL> SELECT TO_CHAR(SYSDATE, 'DD/MM/RRRR-HH24:MI:SS') A FROM DUAL;

A
-------------------
19/06/2006-13:40:54

SQL>


Pra ver, eu coloquei um TO_CHAR e especifiquei o formato que eu queria.
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered

Mensagemem Ter, 20 Jun 2006 9:32 am

Bom dia Pessoal,

Ainda não consegui resolver este select.

Usando a formatação de data para DD/MM/RRRR HH24:MI:SS, ele gera um erro quando a data é menor que 12:00. Ele pede para entrar com um valor inteiro de 1 a 23.

obrigada

Nadia
Nadia Teles
Localização: São Caetano do Sul

Mensagemem Ter, 20 Jun 2006 9:57 am

Manda pra gente uma amostra dos dados que você tem.
Exemplo:
Faz um select hora, minuto from sua_tabela... E larga o resultado pra gente ver como que está sua informação.
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered

Mensagemem Qua, 21 Jun 2006 2:07 pm

Pessoal, obrigada pela ajuda. Enfim consegui fazer o select.

Nadia
Nadia Teles
Localização: São Caetano do Sul



Voltar para SQL

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 5 visitantes