【问题标题】:How to use a subquery inside an INTERVAL function in Teradata?如何在 Teradata 的 INTERVAL 函数中使用子查询?
【发布时间】:2015-05-22 16:16:25
【问题描述】:

我想在 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

【问题讨论】:

    标签: teradata


    【解决方案1】:

    不,这不起作用,'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')
    

    【讨论】:

    • 你太好了,先生 :) 再次感谢你救了我的命。
    猜你喜欢
    • 2023-03-09
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 2019-07-21
    相关资源
    最近更新 更多