テーブル定義内のTIMESTAMP型のデータについて。
こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。
TIMESTAMP型のデータを持つテーブルの扱いについて教えてください。
現在Ens_Util.Logを参照するシステムを開発しようとしております。
このテーブルの中にTimeLoggedというTIMESTAMP型のデータがあるのですが、
それをSELECTした際、CASTの有無で表示されるデータに差異が出ます。
SELECT
DATE(TimeLogged),
CAST(TimeLogged AS TIME),
TimeLogged
FROM
Ens_Util.Log
Expression_1|Expression_2|TimeLogged |
------------+------------+-------------------+
2022-01-25| 15:00:01|2022-01-26 00:00:01|
2022-01-25| 15:00:01|2022-01-26 00:00:01|
2022-01-25| 15:00:01|2022-01-26 00:00:01|
確認する限り9時間の差があるため、UTC時刻との時差が出ているものと考えていますが、ここで何点か疑問があります。
①
テーブルに格納されているタイムスタンプはUTC時刻か、ローカル時刻かどちらでしょうか?
⇒おそらくローカル時刻と考えています。
②
何故CASTの有無で、ローカル時刻の適応(or 除外?)の差分が出るのでしょうか?
私のIRIS側の設定の問題なのでしょうか。。
③
上記の例ではSELECTでしたが、WHEREの条件にTimeLoggedを入れたときも-9時間された値で条件に含まれる挙動をしています。
これを実際にテーブルの中に格納されている、-9時間されていない状態で扱う方法はありませんでしょうか?
力技ですが、以下のようなやり口しか思い浮かんでいません。
> WHERE $PIECE(DATEADD(hh, 9, TimeLogged), ' ', 1) >= '2022-01-26'
何かヒントがありましたら、ご教示いただけますと幸いです。