1
私はNetezza SQLデータベースで作業しています。他の列に基づいてNetezzaのタイムスタンプに時間を追加する
- datetime1で:UTC時刻にトランザクションのタイムスタンプを持つ
- TIME_OFFSET:私は2列を持つUTCからユーザーのタイムゾーンのオフセットを示す整数で、あります。たとえば、UTC + 1のユーザーは、私がやりたいどのような値1
は時間としてDATETIME1
列にTIME_OFFSET
列を追加されています。
+---------------------+-------------+------------+---------------------+
| DATETIME1 | TIME_OFFSET | SIMPLE_ADD | ADD_ONE_HOUR |
+---------------------+-------------+------------+---------------------+
| 2017-06-01 08:01:45 | 1 | 2017-06-02 | 2017-06-01 09:01:45 |
| 2017-06-01 08:03:45 | 2 | 2017-06-03 | 2017-06-01 09:03:45 |
+---------------------+-------------+------------+---------------------+
しかし私がしたいことは第二に、最初の行と2時間に1時間を追加して:これは以下の出力を生成
SELECT *
FROM ADMIN.INTEGRAL_ADSCIENCE_1845
WITH my_table AS (
SELECT TIMESTAMP('2017-06-01 08:01:45') AS datetime1,
1 AS time_offset
UNION
SELECT TIMESTAMP('2017-06-01 08:03:45') AS datetime1,
2 AS time_offset
)
SELECT
DATETIME1,
TIME_OFFSET,
DATETIME1 + TIME_OFFSET AS simple_add,
DATETIME1 + INTERVAL '1 hour' AS add_one_hour
FROM my_table;
:
Iは、次の再現例を作成しました行。
私はmysql date_add()
機能を認識していますが、残念なことにNetezzaに限られています。
ありがとう。私は間隔を置いてキャストすることを考えなかった。私は '+ INTERVAL tm_offset || '時間'は、動作しませんでした。 – niczky12
ええと、Netezzaがクエリを評価する順序と関係があります。 – joeb