2009/7/27 Osvaldo Kussama <[email protected]>:
> 2009/7/27 sergio nogueira <[email protected]>:
>> Decidi usar o smallint (sem plics, no ano):
>>
>>   IF ( date_part('year', NEW.data::timestamp)::smallint = 2006::smallint )
>> THEN
>>
>> Funciona no 8.2 e 8.4
>>
>> Ainda não entendo porque uma função - date_part() - retorna um double
>> (float8) e não um text. ou integer ou smallint. quando o valor esperado deve
>> ser, pelo menos, um integer (smallint) ... Inclusive porque um timestamo é
>> um text 'ano-mes-dia hora:minuto:segundo' ...
>
> O resultado sempre será numérico. Na maioria dos casos o resultado é
> um inteiro mas, pelo menos para um caso, pode ser um número real:
>
> SELECT EXTRACT(SECOND FROM TIME '17:12:28.5');
> Result: 28.5
>
> http://www.postgresql.org/docs/current/interactive/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT
>
>
>>
>> Tá na mão do sinhô no que esta transformação pode resultar (de float8 para
>> smallint). Mas eu teho fé.
>>
>
> Para seuvcaso (ano) sempre estará certo.
>


OOps!
Parece que temos um problema no manual:

bdteste=# SELECT version();
                                              version
---------------------------------------------------------------------------------------------------
 PostgreSQL 8.3.7 on i486-pc-linux-gnu, compiled by GCC gcc-4.3.real
(Ubuntu 4.3.3-5ubuntu4) 4.3.3
(1 registro)

bdteste=# SELECT EXTRACT(SECOND FROM TIME '17:12:28.5');
 date_part
-----------
        28
(1 registro)

bdteste=# SELECT EXTRACT(SECOND FROM current_time);
 date_part
-----------
        29
(1 registro)

bdteste=# SELECT EXTRACT(SECOND FROM current_timestamp);
 date_part
-----------
  4.293842
(1 registro)

bdteste=# SELECT EXTRACT(SECOND FROM TIMESTAMP '2008-12-21 17:12:28.5');
 date_part
-----------
      28.5
(1 registro)

Pelos testes parece que retornar um número real é válido para
TIMESTAMP e não para TIME.

Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a