tech_memo/ORACLE/Timezone
概要 †
- Oracleの以下のデータ型のそれぞれについて、SummerTime?を用いて検証する
- TIMESTAMP
- TIMESTAMP WITH TIME ZONE
- TIMESTAMP WITH LOCAL TIME ZONE
Table定義 †
Name | Null? | Type |
ID | NOT NULL | NUMBER |
TSTAMP | | TIMESTAMP(6) |
TSTAMP_WITH_TZONE | | TIMESTAMP(6) WITH TIME ZONE |
TSTAMP_WITH_LOCAL_TZONE | | TIMESTAMP(6) WITH LOCAL TIME ZONE |
TZONE | | VARCHAR2(32) |
レコードの登録方法 †
- 上記1の時間以前〜4時間、1sec間隔で以下のSQLを実行する
INSERT INTO time_tab VALUES(time_seq.nextval, systimestamp, systimestamp, systimestamp, :B1);
Sample †
ID | TSTAMP | TSTAMP_WITH_TZONE | TSTAMP_WITH_LOCAL_TZONE | TZONE |
1 | 02-NOV-14 12.30.35.291756 AM | 02-NOV-14 12.30.35.291756 AM -07:00 | 02-NOV-14 12.30.35.291756 AM | US/Pacific |
2 | 02-NOV-14 12.30.36.373570 AM | 02-NOV-14 12.30.36.373570 AM -07:00 | 02-NOV-14 12.30.36.373570 AM | US/Pacific |
3 | 02-NOV-14 12.30.37.453699 AM | 02-NOV-14 12.30.37.453699 AM -07:00 | 02-NOV-14 12.30.37.453699 AM | US/Pacific |
4 | 02-NOV-14 12.30.38.533366 AM | 02-NOV-14 12.30.38.533366 AM -07:00 | 02-NOV-14 12.30.38.533366 AM | US/Pacific |
5 | 02-NOV-14 12.30.39.609287 AM | 02-NOV-14 12.30.39.609287 AM -07:00 | 02-NOV-14 12.30.39.609287 AM | US/Pacific |
Graph †
- 上記テーブルのそれぞれの型に関して、タイムスタンプをエポックタイムに変換して、直前のレコードとの時間差をグラフにする
TIMESTAMP型 †
- 夏から冬時間に戻るタイミングで、3600sec時間がマイナスになっている
TIMESTAMP WITH TIME ZONE型 †
TIMESTAMP WITH LOCAL TIME ZONE型 †
- 夏時間の1:00に3600secプラスになり、冬時間の1:00に3600secマイナスになる
エポックタイムが3600sec増減した前後のレコード情報 †
Session Timezone 夏 †
- 冬時間戻るタイミングで、TIMESTAMP型とTIMESTAMP WITH LOCAL TIMEZONE型のエポックタイムが-3600になる
ID | TSTAMP | EPOC_TSTAMP | EPOC_TSTAMP_TZONE | EPOC_TSTAMP_LOCAL_TZONE | EPOC_TSTAMP-EPOC_TSTAMP_TZONE |
4990 | 02-NOV-14 01.59.57.662344 AM | 1414918798 | 1414918798 | 1414922398 | 0 |
4991 | 02-NOV-14 01.59.58.738262 AM | 1414918799 | 1414918799 | 1414922399 | 0 |
4992 | 02-NOV-14 01.59.59.817931 AM | 1414918800 | 1414918800 | 1414922400 | 0 |
4993 | 02-NOV-14 01.00.00.898099 AM | 1414915201 | 1414918801 | 1414918801 | -3600 |
4994 | 02-NOV-14 01.00.01.974019 AM | 1414915202 | 1414918802 | 1414918802 | -3600 |
4995 | 02-NOV-14 01.00.03.049936 AM | 1414915203 | 1414918803 | 1414918803 | -3600 |
Session Timezone 冬 †
- 冬時間に戻った段階で、エポックタイムが-3600になり、正常に戻る
ID | TSTAMP | EPOC_TSTAMP | EPOC_TSTAMP_TZONE | EPOC_TSTAMP_LOCAL_TZONE | EPOC_TSTAMP-EPOC_TSTAMP_TZONE |
4990 | 02-NOV-14 01.59.57.662344 AM | 1414922398 | 1414918798 | 1414922398 | 3600 |
4991 | 02-NOV-14 01.59.58.738262 AM | 1414922399 | 1414918799 | 1414922399 | 3600 |
4992 | 02-NOV-14 01.59.59.817931 AM | 1414922400 | 1414918800 | 1414922400 | 3600 |
4993 | 02-NOV-14 01.00.00.898099 AM | 1414918801 | 1414918801 | 1414918801 | 0 |
4994 | 02-NOV-14 01.00.01.974019 AM | 1414918802 | 1414918802 | 1414918802 | 0 |
4995 | 02-NOV-14 01.00.03.049936 AM | 1414918803 | 1414918803 | 1414918803 | 0 |
TIMESTAMP型で正確なエポックタイムが取得できない理由 †
タイム・ゾーン・データ型 †
データ型 | タイム・ゾーン | 小数秒 |
DATE | なし | なし |
TIMESTAMP | なし | あり |
TIMESTAMP WITH TIME ZONE | 明示的 | あり |
TIMESTAMP WITH LOCAL TIME ZONE | 関連 | あり |
最新の20件
2023-01-26
2022-11-11
2022-03-02
2022-02-03
2021-11-18
2021-11-11
2021-10-27
2021-10-04
2021-09-30
2021-08-24
2021-04-01
2021-02-25
2020-08-13
2020-05-22
2020-04-16
2020-04-15
2020-03-23
2020-03-12
2020-02-27
今日の20件
- counter: 420
- today: 1
- yesterday: 0
- online: 2