使用 Redshift 查询结果为 to_char 格式

时间:2021-07-28 16:43:57

标签: sql amazon-web-services syntax amazon-redshift

受到 slected answer to Declare a variable in RedShift 的启发,我尝试将查询结果用作 to_char 函数调用中的 format 值:

WITH tmp_variables as (
    select 'YYYY-MM-DD' as date_format
)
SELECT to_char(OrderDate, (SELECT date_format FROM tmp_variables)) FROM Orders

但是我收到一个错误

<块引用>

TO_CHAR 参数:第二个输入必须是字符串文字

如何将 tmp_variablesdate_format 值用作 to_char format 而不会出错,或者是否有替代使用 to_char 的方法,其中这行得通吗?

1 个答案:

答案 0 :(得分:1)

SELECT 是一个处理数据的 SQL 运算符。 SQL 在它可以对数据进行操作之前被编译。基本的答案是这不会像书面的那样工作。

您在问题中试图实现的目标并不清楚 - 出于某些原因更改日期输出格式以用于某些查询集而不是其他查询?在一般情况下,您需要修改进入编译器的 SQL,这意味着读取一些配置并将其合并到 SQL 文本中。如果用例更加有限,则可能有另一种方法来实现所需的结果,但仅限于某些限制范围内。

一些可能性 - 您可以使用格式文字设置 SQL 变量。如果有能力,您的客户可以读取信息并修改查询本身。可以使用存储过程。 SQL 修饰符(pg_bouncer?)可以存在于客户端和集群之间,并根据其他一些因素替换字符串。每一种都有局限性和成本。

如果你能描述用例,它可以产生不同/更好的方法。