Todos los productos
Search
Centro de documentos

PolarDB:Tipos DATE de 64 bits

Última actualización: Sep 05, 2026

PolarDB for PostgreSQL (Compatible with Oracle) admite tipos DATE de 64 bits compatibles con Oracle. Si migra aplicaciones de Oracle a PolarDB, comprender estas diferencias de comportamiento le ayudará a evitar la pérdida de precisión en los datos y errores en la aplicación.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

  • Un clúster que ejecute la versión secundaria V1.1.29 (publicada en diciembre de 2022) o una posterior. Solo los clústeres nuevos admiten tipos DATE de 64 bits; los clústeres existentes no son compatibles con esta función.

  • El controlador JDBC de PolarDB en la versión 42.2.9.1.2 o posterior. Usar una versión anterior del controlador puede provocar pérdida de precisión. Para consultar las instrucciones de descarga y la información de versiones, consulte JDBC.

Diferencias de comportamiento respecto a la versión anterior

La implementación de DATE de 64 bits modifica dos comportamientos en comparación con la versión anterior. Revise estos cambios antes de migrar sus aplicaciones existentes.

Tipo de resultado al restar valores DATE

En la nueva versión, la resta de dos valores DATE devuelve un valor NUMERIC. En la versión anterior, el resultado era de tipo INTERVAL.

Versión anterior: devuelve INTERVAL.

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

Nueva versión: devuelve NUMERIC.

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

Si su aplicación procesa los resultados de la resta de valores DATE como un tipo INTERVAL, actualice el código para manejar valores NUMERIC antes de migrar a esta versión.

Truncamiento de precisión

El tipo DATE de 64 bits almacena fechas con una resolución de 1 segundo. Los valores de entrada con precisión inferior a un segundo se truncan al segundo más cercano.

Versión anterior: se conserva la precisión inferior a un segundo.

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)

Nueva versión: se trunca la precisión inferior a un segundo.

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

Si su aplicación depende de la precisión inferior a un segundo en los valores DATE, utilice el tipo TIMESTAMP, ya que admite una precisión de hasta microsegundos.

Control del formato de visualización

Establezca el parámetro nls_date_format para controlar cómo se muestran los valores DATE.

Ejemplo: formato separado por diagonales

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

Ejemplo: formato separado por guiones

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