Lourenco Bueno escreveu:
> Fala galera, tudo bom?
> 
> estou trabalhando com postgres, tenho duas datas e queria saber a 
> diferença entre elas em horas!
> 
> tentei com duas datas de exemplo..
> 
> select to_timestamp('1410071808', 'ddmmyyhh24mi') - 
> to_timestamp('1308071105', 'ddmmyyhh24mi')
> 
> mas ele me retorna assim...
> 62 days 07:03:00
> 
> eu queria em horas mesmo!
> e eu não sei como converter isso que ele me traz no que preciso, e nem 
> como fazer ele retornar no formato que quero..


No momento só desenvolvendo uma função.
Na lista TODO consta esta questão mas não está prevista para a próxima 
versão. Veja "functions" em:
http://www.postgresql.org/docs/faqs.TODO.html


> 
> tentei colocar um to_char( tudo_aquilo, 'mi' ) mas ele retorna só a 
> diferença dos minutos, também não funciona..
> 
> queria resolver isso na própria consulta...
> 
> alguem pode me ajudar?
> 

Algo do tipo:
bdteste=# SELECT extract(day from (to_timestamp('1410071808', 
'ddmmyyhh24mi') - to_timestamp('1308071105', 'ddmmyyhh24mi')))*24 + 
extract(hour from (to_timestamp('1410071808', 'ddmmyyhh24mi') - 
to_timestamp('1308071105', 'ddmmyyhh24mi')));
  ?column?
----------
      1495
(1 registro)

Obviamente, como falei acima, uma função ficará melhor.


> outra coisa, li na documentação que não rola usar o to_char porque vai 
> ser desativado..


?? Tem certeza ?? Veja:
http://www.postgresql.org/docs/8.2/interactive/functions-formatting.html

Talvez você tenha lido no manual da versão 8.0:
"Warning: to_char(interval, text) is deprecated and should not be used 
in newly-written code. It will be removed in the next version."
mas nas release notes da versão 8.1 consta:
"The 8.0 release announced that the to_char() function for intervals 
would be removed in 8.1. However, since no better API has been 
suggested, to_char(interval) has been enhanced in 8.1 and will remain in 
the server."

E repare que se aplicaria apenas a "interval" e não a "date" ou "timestamp".


> e agora? como trago a data formatada do jeito que eu quero?
> 

1. SET DATESTYLE
http://www.postgresql.org/docs/8.2/interactive/sql-set.html

2. Alterar o DATESTYLE no postgresql.conf
http://www.postgresql.org/docs/8.2/interactive/runtime-config-client.html#RUNTIME-CONFIG-CLIENT-FORMAT

3. Usar to_char()

Osvaldo
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Reply via email to