On 09-03-2014 12:23, Bruno Silva wrote:
2014-03-08 23:11 GMT-03:00 Fabrízio de Royes Mello <[email protected]>:
On 08-03-2014 22:33, Edson F. Lidorio wrote:

Pessoal,
Estou precisando de uma ajuda no sql abaixo:
Quero pegar somente a parte inteira da subtração de duas data.

select dt_abertura,dt_fim,(dt_fim - dt_abertura)no_dias from osservhe;

   dt_abertura |         dt_fim                        | no_dias
-------------+-------------------------+------------------------
   2012-11-18  | 2012-11-18 23:09:09     | 23:09:09
   2012-07-23  | 2012-09-18 22:21:10     | 57 days 22:21:10
   2012-09-10  | 2012-09-18 22:43:56     | 8 days 22:43:56
   2012-09-03  | 2012-09-18 23:44:33     | 15 days 23:44:33
   2012-08-05  | 2012-09-21 23:39:09     | 47 days 23:39:09
   2012-08-15  | 2012-09-21 23:46:41     | 37 days 23:46:41
   2012-08-12  | 2012-09-21 23:49:15     | 40 days 23:49:15
   2012-08-06  | 2012-09-22 00:01:15     | 47 days 00:01:15
   2012-08-05  | 2012-09-22 00:10:55     | 48 days 00:10:55
   2012-07-23  | 2012-09-22 00:16:55     | 61 days 00:16:55
   2012-10-26  | 2012-10-26 22:26:29     | 22:26:29
   2012-09-10  | 2012-09-18 22:30:58     | 8 days 22:30:58
   2012-07-22  | 2012-09-18 22:11:40     | 58 days 22:11:40


O resultado da sua subtração é um tipo 'interval' pois tem um timestamp
envolvido.

Faça o seguinte:

select dt_abertura, dt_fim, (dt_fim::date - dt_abertura) from osservhe;

O resultado da subtração de 2 tipos 'date' é um 'integer';


Use a função extract com epoch.
extract( 'epoch' from (dt_fim::date - dt_abertura))

Bruno,

Não vai funcionar essa sua chamada. Veja as assinaturas possíveis para "date_part":

fabrizio=# \df date_part
                                   List of functions
Schema | Name | Result data type | Argument data types | Type
------------+-----------+------------------+-----------------------------------+--------
pg_catalog | date_part | double precision | text, abstime | normal pg_catalog | date_part | double precision | text, date | normal pg_catalog | date_part | double precision | text, interval | normal pg_catalog | date_part | double precision | text, reltime | normal pg_catalog | date_part | double precision | text, timestamp without time zone | normal pg_catalog | date_part | double precision | text, timestamp with time zone | normal pg_catalog | date_part | double precision | text, time without time zone | normal pg_catalog | date_part | double precision | text, time with time zone | normal
(8 rows)

O resultado daquela subtração será um 'integer', logo não existe uma 'date_part' que tenha o segundo argumento deste tipo.

Att,

--
   Fabrízio de Royes Mello         Timbira - http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a