如何在 Teradata 的 INTERVAL 函数中使用子查询?
How to use a subquery inside an INTERVAL function in Teradata?
我想像这样在 Teradata 中使用 Interval 函数:
SELECT DATE '1998-08-31' + INTERVAL '30' DAY;
但我想使日期范围可配置。也就是说,我希望它从 table 中读取,而不是在上面的示例中使用像“30”这样的硬编码值。
我怎样才能做到这一点?从中读取日期范围的 table 会将范围存储为整数。所以我想它也应该转换为 VARCHAR。请说清楚。
显然这不起作用
SELECT DATE '1998-08-31' + INTERVAL CAST((SELECT config.ask_gift_dt_diff
FROM ddcoe_tbls.gift_lnk_config config
WHERE bzd_cnst_lnk_ctg_cd = 'ASK GIFT DATE RANGE') AS VARCHAR(20)) DAY
不,这行不通,'30'
不是字符串,它是 interval
的一部分。
您需要将数字 CAST
乘以 INTERVAL DAY
或将 INTERVAL
乘以该数字:
SELECT DATE '1998-08-31'
+ CAST((SELECT config.ask_gift_dt_diff
FROM ddcoe_tbls.gift_lnk_config config
WHERE bzd_cnst_lnk_ctg_cd = 'ASK GIFT DATE RANGE') AS INTERVAL DAY)
SELECT DATE '1998-08-31'
+ (SELECT config.ask_gift_dt_diff * INTERVAL '1' DAY
FROM ddcoe_tbls.gift_lnk_config config
WHERE bzd_cnst_lnk_ctg_cd = 'ASK GIFT DATE RANGE')
我想像这样在 Teradata 中使用 Interval 函数:
SELECT DATE '1998-08-31' + INTERVAL '30' DAY;
但我想使日期范围可配置。也就是说,我希望它从 table 中读取,而不是在上面的示例中使用像“30”这样的硬编码值。 我怎样才能做到这一点?从中读取日期范围的 table 会将范围存储为整数。所以我想它也应该转换为 VARCHAR。请说清楚。 显然这不起作用
SELECT DATE '1998-08-31' + INTERVAL CAST((SELECT config.ask_gift_dt_diff
FROM ddcoe_tbls.gift_lnk_config config
WHERE bzd_cnst_lnk_ctg_cd = 'ASK GIFT DATE RANGE') AS VARCHAR(20)) DAY
不,这行不通,'30'
不是字符串,它是 interval
的一部分。
您需要将数字 CAST
乘以 INTERVAL DAY
或将 INTERVAL
乘以该数字:
SELECT DATE '1998-08-31'
+ CAST((SELECT config.ask_gift_dt_diff
FROM ddcoe_tbls.gift_lnk_config config
WHERE bzd_cnst_lnk_ctg_cd = 'ASK GIFT DATE RANGE') AS INTERVAL DAY)
SELECT DATE '1998-08-31'
+ (SELECT config.ask_gift_dt_diff * INTERVAL '1' DAY
FROM ddcoe_tbls.gift_lnk_config config
WHERE bzd_cnst_lnk_ctg_cd = 'ASK GIFT DATE RANGE')