Olá Pessoal, Aproveitando a oportunidade, vi na Oracle Magazine de janeiro 2012 material bom sobre trabalhando com datas. Segue o link:
http://www.oracle.com/technetwork/issue-archive/2012/12-jan/o12plsql-1408561.html Att Eriovaldo 2012/7/4 Ulisses <usl...@gmail.com> > ** > > > Bom dia! > > Muito obrigado André e Chiappa. > > Vou seguir o que me ensinaram. > > Grato. > > Ulisses > > _____ > > De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em > nome de J. Laurindo Chiappa > Enviada em: terça-feira, 3 de julho de 2012 13:41 > Para: oracle_br@yahoogrupos.com.br > Assunto: [oracle_br] Re: Subtrair campos TimeStamp > > > Sim, colega, se há uma coisa que vc pode estar Certo na vida de TI são as > diferenças entre databases, Em Especial para datatypes não completamente > padronizados ao nível de detalhe como é o caso do TIMESTAMP, sim.... > NO caso do Oracle, o comportamento Documentado é o seguinte : quando vc faz > a subtração de dois timestamps, o resultado é um string de INTERVAL, que Já > contém o intervalo de dias, horas, minutos, segundos e fração de segundos > da > substração, veja : > > SYSTEM@O10GR2::SQL>select to_timestamp('05/07/2012 14:17:20.1000', > 'dd/mm/yyyy hh24:mi:ss.ff') - to_timestamp('03/07/2012 13:07:10.1000', > 'dd/mm/yyyy hh24:mi:ss.ff') result from du > al; > > RESULT > ---------------------------------------------------------- > +000000002 01:10:10.000000000 > > dois dias, uma hora, 10 minutos e 10 segundos, okdoc ? Então uma > alternativa > é vc simplesmente via SUBSTR extrair os valores e para Dias, dividir a > coluna dias pela qtdade de segundos num dia, a coluna horas, assim por > diante : > http://www.databasejournal.com/features/oracle/article.php/2234501 > tem um exemplo, facilmente adaptável pra sua necessiadde .... > > Outra que sempre deveria vir á baila quando se fala de extrair é a função > EXTRACT, exemplo : > > SYSTEM@O10GR2::SQL> select > 2 extract (day from ( to_timestamp('05/07/2012 14:17:20.1000', 'dd/mm/yyyy > hh24:mi:ss.ff') > 3 - to_timestamp('03/07/2012 13:07:10.1000', 'dd/mm/yyyy hh24:mi:ss.ff') > 4 ) > 5 ) *24*60*60 > 6 + > 7 extract (hour from ( to_timestamp('05/07/2012 14:17:20.1000', 'dd/mm/yyyy > hh24:mi:ss.ff') > 8 - to_timestamp('03/07/2012 13:07:10.1000', 'dd/mm/yyyy hh24:mi:ss.ff') > 9 ) > 10 ) *60*60 > 11 + > 12 extract (minute from ( to_timestamp('05/07/2012 14:17:20.1000', > 'dd/mm/yyyy hh24:mi:ss.ff') > 13 - to_timestamp('03/07/2012 13:07:10.1000', 'dd/mm/yyyy hh24:mi:ss.ff') > 14 ) > 15 ) *60 > 16 + > 17 extract (second from ( to_timestamp('05/07/2012 14:17:20.1000', > 'dd/mm/yyyy hh24:mi:ss.ff') > 18 - to_timestamp('03/07/2012 13:07:10.1000', 'dd/mm/yyyy hh24:mi:ss.ff') > 19 ) > 20 ) > 21* qtd_segundos from dual; > > QTD_SEGUNDOS > ------------------ > 177010 > > SE eu não errei na digitação, é isso aí.... E claro, vc Sempre tem também a > opção de Transformar (via CAST, provavelmente) em DATE, e aí usar as > técnicas já tradicionais de manipulação de data no bd Oracle.... Fica a seu > critério... > > []s > > Chiappa > > --- Em oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br > > > > , "Ulisses" <uslima@...> escreveu > > > > Bom dia! > > > > > > > > Tenho dois campos tipo TimeStamp e necessito calcular a diferença entre > esse > > dois campos e converter em Número de Minutos. > > > > > > > > Diferente de outros bancos de dados que conheço a Query "select > > campo2-campo1 from TABELA", me retorno uma valor tipo TimeStamp também e, > > nesse casso, não consigo multiplicar por um número e obter outro número. > > > > > > > > Como se faz isso no Oracle? > > > > > > > > Obrigado. > > > > > > > > Ulisses > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > [As partes desta mensagem que não continham texto foram removidas] > > > [As partes desta mensagem que não continham texto foram removidas] ------------------------------------ -------------------------------------------------------------------------------------------------------------------------- >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira >responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -------------------------------------------------------------------------------------------------------------------------- >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » >Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: >http://www.oraclebr.com.br/ ------------------------------------------------------------------------------------------------------------------------ Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html