Todos os produtos
Search
Central de documentação

PolarDB:Tipos DATE de 64 bits

Última atualização: Jun 28, 2026

O PolarDB for PostgreSQL (Compatible with Oracle) oferece suporte a tipos DATE de 64 bits compatíveis com o Oracle. Se você estiver migrando aplicações do Oracle para o PolarDB, compreender essas diferenças de comportamento ajudará a evitar perda de precisão dos dados e erros na aplicação.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Um cluster executando a versão secundária V1.1.29 (lançada em dezembro de 2022) ou posterior. Somente novos clusters oferecem suporte a tipos DATE de 64 bits. Clusters existentes não têm esse suporte.

  • Driver JDBC do PolarDB versão 42.2.9.1.2 ou posterior. O uso de uma versão mais antiga do driver pode causar perda de precisão. Para obter instruções de download e informações sobre versões, consulte JDBC.

Diferenças de comportamento em relação à versão anterior

A implementação de DATE de 64 bits altera dois comportamentos em comparação à versão anterior. Analise essas mudanças antes de migrar aplicações existentes.

Tipo de resultado da subtração de DATE

Na nova versão, a subtração de dois valores DATE retorna um valor NUMERIC. Na versão anterior, o resultado era um INTERVAL.

Versão anterior — retorna INTERVAL:

select pg_typeof(sysdate - sysdate) from dual;
pg_typeof
-----------
 interval
(1 row)

Nova versão — retorna NUMERIC:

select pg_typeof(sysdate - sysdate) from dual;
pg_typeof
-----------
 numeric
(1 row)
Importante

Se sua aplicação processa resultados de subtração de DATE como um tipo INTERVAL, atualize o código para lidar com valores NUMERIC antes de migrar para esta versão.

Truncamento de precisão

O tipo DATE de 64 bits armazena datas com resolução de 1 segundo. Valores de entrada com precisão inferior a um segundo são truncados para o segundo mais próximo.

Versão anterior — a precisão inferior a um segundo é preservada:

select to_date('2021-10-31 10:31:31.7777') - to_date('2021-10-31 10:31:31') from dual;
?column?
---------------
 00:00:00.7777
(1 row)

Nova versão — a precisão inferior a um segundo é truncada:

select to_date('2021-10-31 10:31:31.7777') - to_date('2021-10-31 10:31:31') from dual;
?column?
----------
        0
(1 row)
Nota

Se sua aplicação depender de precisão inferior a um segundo em valores DATE, use o tipo TIMESTAMP, que oferece suporte a precisão de até microssegundos.

Controle do formato de exibição

Defina o parâmetro nls_date_format para controlar como os valores DATE são exibidos.

Exemplo: formato separado por barras

set nls_date_format = 'yyyy/mm/dd hh24:mi:ss';
select sysdate from dual;
sysdate
---------------------
 2022/12/06 09:13:59
(1 row)

Exemplo: formato separado por hifens

set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
select sysdate from dual;
sysdate
---------------------
 2022-12-06 09:14:31
(1 row)