Oracle

如何使用 Oracle 從“日期”類型的列創建 UTC 索引?

  • November 16, 2015

我有一個帶有“日期”類型列的 Oracle 數據庫,它在本地時區儲存時間戳。我需要使用 UTC 時區的時間戳查詢此列。

如何在使用 UTC 時間戳查詢時可以使用的列上創建索引以及如何格式化查詢?

準確地說,該類型儲存沒有任何時區資訊date的時間戳,而不是“在本地時區”。

如何在使用 UTC 時間戳查詢時可以使用的列上創建索引以及如何格式化查詢?

你有三個選擇:

  • 查詢時索引date並轉換timestampdate,例如:
select * from foo where foo_date=cast(systimestamp as date) from dual;
  • date在轉換為 a時創建一個功能索引timestamp with local time zone,例如:
create unique index i_foo on foo(cast(ts as timestamp with local time zone));
select * from foo where cast(ts as timestamp with local time zone)=
                       cast(X as timestamp with local time zone);
  • 將類型列的類型更改datetimestamp with time zonetimestamp with local time zone

其中,最後一個選項很可能是最好的選項——timestamp with local time zone對於大多數指代固定時間點的數據來說,它是“正確”類型。(與“中午”相反,無論您在哪個時區,它始終是 12:00。)

引用自:https://dba.stackexchange.com/questions/8588