MathJax

MathJax-2

MathJax-3

Google Code Prettify

置頂入手筆記

EnterproseDB Quickstart — 快速入門筆記

由於考慮採用 EnterpriseDB 或是直接用 PostgreSQL 的人,通常需要一些入手的資料。這邊紀錄便提供相關快速上手的簡單筆記 ~ 這篇筆記以 資料庫安裝完畢後的快速使用 為目標,基本紀錄登入使用的範例:

2016年6月16日 星期四

PostgreSQL / EnterpriseDB / Oracle 三者的 DATE datatype 的差異

在 EDB 中,edb_redwood_date 是 Oracle 相容性的設置參數(位在 $PGDATA/postgresql.conf 裡面),這會將一些 PostgreSQL 原生的時間格式,微調成能夠相容於 Oracle 的設定。

根據 EnterpriseDB 的 Oracle 相容性使用手冊 Database Compatibility for Oracle® Developer's Guide v9.5 - 3.2.4 Date/Time Types ,以及 PostgreSQL 原生版文件 PostgreSQL: Documentation: 9.1: Date/Time Types - Table 8-9. Date/Time Types。可見 EDB 為了 Oracle 相容性緣故,於啟用 edb_redwood_date 之後(預設為啟用),會將 DATE 轉換成 PostgreSQL 原生的 TIMESTAMP(0)。

下圖為一個小測試:

不過根據 PostgreSQL 原生文件所述:
原生的 DATE 為 4 Bytes 的資料型態
而 TIMESTAMP 為 8 Bytes 的資料型態

Oracle 中的 DATE 為 7 Bytes 的資料型態

所以 EDB 的預設 DATE 為 TIMESTAMP(0)(也就是 8 Byte 僅含日期的時間)是 Oracle 相容所必須的設計。

因此,如果沒有要在 EDB 上面進行額外開發原生 PostgreSQL 功能的需求,就無須擔心 EDB 自動轉換的問題,保持預設的 edb_redwood_date = on 就好,以達到最佳 Oracle 相容性。





參考:
Database Compatibility for Oracle® Developer's Guide v9.5 - 3.2.4 Date/Time Types

PostgreSQL: Documentation: 9.1: Date/Time Types - Table 8-9. Date/Time Types

How many bytes does a DATE use? | Oracle Community

沒有留言:

張貼留言