PolarDB PostgreSQL版(兼容Oracle)支持Oracle兼容的64位DATE类型。
注意事项
- 在内核小版本V1.1.29(发布时间:2022年12月)及以上版本中创建的集群支持该功能。存量集群,不支持该功能。
- 需要搭配使用PolarDB最新版本的JDBC驱动,JDBC驱动版本需要42.2.9.1.2及以上,否则可能会出现精度丢失的问题。如何下载以及查看PolarDB-JDBC版本,请参见JDBC。
简介
与旧版本相比,新版本主要的兼容性变化分为以下三方面:
- DATE类型相减是numeric类型,不再是interval类型。
- 在旧版本中,DATE类型相减是interval类型。
显示结果如下:select pg_typeof(sysdate - sysdate) from dual;
pg_typeof ----------- interval (1 row)
- 在新版本中,DATE类型相减是numeric类型。
显示结果如下:select pg_typeof(sysdate - sysdate) from dual;
pg_typeof ----------- numeric (1 row)
- 在旧版本中,DATE类型相减是interval类型。
- DATE类型对于更高精度的输入,会进行精度截断。
- 在旧版本中,对于更高精度的输入,没有进行秒之后的精度截断。
显示结果如下: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)
- 在新版本中,对于更高精度的输入,会进行秒之后的精度截断。
显示结果如下:select to_date('2021-10-31 10:31:31.7777') - to_date('2021-10-31 10:31:31') from dual;
?column? ---------- 0 (1 row)
- 在旧版本中,对于更高精度的输入,没有进行秒之后的精度截断。
- 支持通过设置
nls_date_format
来控制DATE类型的展示。- 将
nls_date_format
设置为'yyyy/mm/dd hh24:mi:ss'
,并查询DATE类型。
显示结果如下:set nls_date_format = 'yyyy/mm/dd hh24:mi:ss'; select sysdate from dual;
sysdate --------------------- 2022/12/06 09:13:59 (1 row)
- 将
nls_date_format
设置为'yyyy-mm-dd hh24:mi:ss'
,并查询DATE类型。
显示结果如下:set nls_date_format = 'yyyy-mm-dd hh24:mi:ss'; select sysdate from dual;
sysdate --------------------- 2022-12-06 09:14:31 (1 row)
- 将