Oracle timestamp(6)的PostgreSQL等效类型、纳秒支持及SQL迁移问题
解答
1. Oracle timestamp(6) 对应 PostgreSQL 等效类型及纳秒支持情况
- Oracle的
timestamp(6)表示精度为6位的时间戳,精确到微秒,PostgreSQL中等效的类型是timestamp without time zone(可简写为timestamp),PostgreSQL的timestamp类型默认精度就是6位微秒,和Oracletimestamp(6)完全兼容。如果原Oracle类型带时区,对应PostgreSQL的timestamptz(timestamp with time zone)即可。 - PostgreSQL原生
timestamp/timestamptz类型最多支持6位小数秒,仅精确到微秒,不支持原生纳秒级时间戳存储。如果有纳秒存储需求,可以用bigint类型存储纳秒级Unix时间戳,或者用numeric类型存储带9位小数的秒级Unix时间戳,自行做格式转换即可。
2. 兼容Oracle的to_timestamp查询写法
你给出的Oracle查询在PostgreSQL中可以直接使用,格式符FF6在PostgreSQL的to_timestamp函数中是兼容的:
SELECT to_timestamp('20210603033632200995','yyyymmddhh24missFF6');
执行后返回结果为:2021-06-03 03:36:32.200995,和Oracle执行结果一致。
内容的提问来源于stack exchange,提问作者Subarnarekha
相关产品推荐
相关产品推荐

