根据其他列将小时数添加到 Netezza 中的时间戳
Add hours to timestamp in Netezza based on other column
我在 Netezza SQL 数据库中工作。我有 2 列:
- DATETIME1:具有 UTC 时间的交易时间戳
- TIME_OFFSET:是一个整数,表示用户所在时区与UTC的偏移量。例如,UTC+1 中的用户值为 1。
我想做的是将 TIME_OFFSET
列作为一个小时添加到 DATETIME1
列。
我创建了以下可重现的示例:
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;
这将创建以下输出:
+---------------------+-------------+------------+---------------------+
| 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 |
+---------------------+-------------+------------+---------------------+
但我想要的是第一行增加 1 小时,第二行增加 2 小时。
我知道 mysql date_add()
功能,但不幸的是我仅限于 Netezza。
这应该适合你。
WITH my_table AS (SELECT TIMESTAMP('2017-06-01 08:01:45') AS dttm
, 1 AS tm_offset
UNION
SELECT TIMESTAMP('2017-06-01 08:03:45') AS dttm
, 2 AS tm_offset)
SELECT dttm
, tm_offset
, dttm + tm_offset AS simple_add
, dttm + CAST(tm_offset || ' hour' AS INTERVAL)
FROM my_table;
我在 Netezza SQL 数据库中工作。我有 2 列:
- DATETIME1:具有 UTC 时间的交易时间戳
- TIME_OFFSET:是一个整数,表示用户所在时区与UTC的偏移量。例如,UTC+1 中的用户值为 1。
我想做的是将 TIME_OFFSET
列作为一个小时添加到 DATETIME1
列。
我创建了以下可重现的示例:
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;
这将创建以下输出:
+---------------------+-------------+------------+---------------------+
| 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 |
+---------------------+-------------+------------+---------------------+
但我想要的是第一行增加 1 小时,第二行增加 2 小时。
我知道 mysql date_add()
功能,但不幸的是我仅限于 Netezza。
这应该适合你。
WITH my_table AS (SELECT TIMESTAMP('2017-06-01 08:01:45') AS dttm
, 1 AS tm_offset
UNION
SELECT TIMESTAMP('2017-06-01 08:03:45') AS dttm
, 2 AS tm_offset)
SELECT dttm
, tm_offset
, dttm + tm_offset AS simple_add
, dttm + CAST(tm_offset || ' hour' AS INTERVAL)
FROM my_table;