Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Teradata的区间函数中使用子查询?_Teradata - Fatal编程技术网

如何在Teradata的区间函数中使用子查询?

如何在Teradata的区间函数中使用子查询?,teradata,Teradata,我想在Teradata中使用Interval函数,如下所示: SELECT DATE '1998-08-31' + INTERVAL '30' DAY; 但我想让日期范围可配置。也就是说,我希望它是从表中读取的,而不是在上面的示例中使用像“30”这样的硬编码值。 我怎样才能做到这一点?从中读取日期范围的表将以整数形式存储范围。所以我想它也应该被转换成VARCHAR。请澄清。 显然这不起作用 SELECT DATE '1998-08-31' + INTERVAL CAST((SELECT con

我想在Teradata中使用Interval函数,如下所示:

SELECT DATE '1998-08-31' + INTERVAL '30' DAY;
但我想让日期范围可配置。也就是说,我希望它是从表中读取的,而不是在上面的示例中使用像“30”这样的硬编码值。 我怎样才能做到这一点?从中读取日期范围的表将以整数形式存储范围。所以我想它也应该被转换成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'
不是字符串,它是
间隔的一部分

您需要
将该数字转换为
间隔日
或将
间隔
乘以该数字:

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')
你太好了,先生:)再次感谢你救了我的命。