hsqldb では、関数 TIMESTAMP ( ) は WITHOUT TIME ZONE タイムスタンプを返します。これは、さらに変換する前にセッションのタイム ゾーンに調整されます。
したがって、私のセッションが UTC+1 であり、UNIX タイムスタンプが 1364353339 (水、2013 年 3 月 27 日 03:02:19 GMT、http: //www.onlineconversion.com/unix_time.htm によると)であるとしましょう。 . 私が電話した場合:
VALUES( TIMESTAMP( 1364353339 ) AT TIME ZONE INTERVAL '0:00' HOUR TO MINUTE );
を与え2013-03-27 02:02:19.000000+0:00
ます。これは正しい tz を持っていますが、実際の値は 1 時間未満です。
私が調べた他の可能性
VALUES( TIMESTAMP( 1364353339 ) AT LOCAL ) --> 2013-03-27 03:02:19.000000+1:00
Value right, TZ wrong
VALUES CAST(TIMESTAMP(1364353339) AT TIME ZONE INTERVAL '0:00' HOUR TO MINUTE AS TIMESTAMP(0) WITH TIME ZONE); --> 2013-03-27 02:02:19+0:00
Value wrong, TZ right
VALUES CAST(TIMESTAMP(1364353339) AT LOCAL AS TIMESTAMP(0) WITH TIME ZONE) --> 2013-03-27 03:02:19+1:00
Value right, TZ wrong
セッションのタイムゾーンが以前に UTC に切り替えられた場合 (たとえば、 ) 、これらすべてが正しい値 ( または のいずれ2013-03-27 03:02:19+0:00
か) を返します。2013-03-27 04:02:19+1:00
SET TIME ZONE INTERVAL '0:00' HOUR TO MINUTE
これはビューフィールドに対して計算されているため、それを行うことはできません。実際のタイムスタンプは、テキスト テーブルのフィールドから取得されます。