3

SQL Server では、次のようなテーブルを作成できます。

create table test (
  [TimeStamp_test] [datetime] NOT NULL DEFAULT (getutcdate())
);

に似たものgetutcdate()はありoracleますか?

私は使用を認識していますSELECT SYS_EXTRACT_UTC FROM DUAL(つまり、このテーブルへの挿入時にトリガーを使用します)。

他に簡単なオプションがあれば教えてください。よろしくお願いします。

4

2 に答える 2

5

これを試して:

CREATE TABLE MY_TEST
  (ID NUMBER,
   CURR_TIMESTAMP TIMESTAMP DEFAULT SYSTIMESTAMP,
   UTC_TIMESTAMP  TIMESTAMP DEFAULT SYS_EXTRACT_UTC(SYSTIMESTAMP));

INSERT INTO MY_TEST(ID) VALUES(1);

SELECT * FROM MY_TEST;

共有してお楽しみください。


編集:それを楽しむために、これに正しいタイムゾーンを含めるようにしようと決めました。SYS_EXTRACT_UTC(SYSTIMESTAMP) を TIMESTAMP WITH TIME ZONE 列に入れるだけで、値の時間部分が正しく変更されましたが、タイムゾーンはそのままでした。少しいじった後、私は次のことを思いつきました:

CREATE TABLE RPJ_TEST
  (ID NUMBER,
   CURR_TIMESTAMP TIMESTAMP WITH TIME ZONE DEFAULT SYSTIMESTAMP,
   UTC_TIMESTAMP  TIMESTAMP WITH TIME ZONE
      DEFAULT TO_TIMESTAMP_TZ(TO_CHAR(SYS_EXTRACT_UTC(SYSTIMESTAMP)) || ' 00:00',
                              'DD-MON-YYYY HH:MI:SS.FF6 PM TZH:TZM'));

恐ろしいですが、UTC 時間列のタイムゾーンを正しく取得します

抵抗は無駄です。

于 2012-04-20T14:38:47.557 に答える