【问题标题】:Use Redshift query result as to_char format使用 Redshift 查询结果为 to_char 格式
【发布时间】:2021-10-04 10:15:01
【问题描述】:

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 的替代方法?

【问题讨论】:

  • 不可能。错误信息很清楚。
  • 我的问题更广泛一些。基本上,除了使用to_char 来完成这项工作之外,还有其他选择吗?
  • 使用CASE。 (最小消息长度的额外填充。开发人员手头有太多时间。)

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


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    相关资源
    最近更新 更多