Amazon Redshift - 在 where 条件下的变量

Posted

技术标签:

【中文标题】Amazon Redshift - 在 where 条件下的变量【英文标题】:Amazon Redshift - variable in where condition 【发布时间】:2020-12-07 21:30:11 【问题描述】:

我正在尝试自动化查询过滤器。所以,过滤器的值每个月都在变化。

Select * from table where desc like '202012%'

以下命令让我获得 202012%,但我无法弄清楚是否/如何在 where 子句中使用它 concat(从 current_date 中提取(year), lpad(extract(从 current_date 中的月份), 2)) || '%'

谢谢。

【问题讨论】:

【参考方案1】:

你想要to_char()吗?

where descr like to_char(current_date, 'YYYYMM') || '%'

重要提示:您的问题表明您将日期存储为字符串。不!使用正确的数据类型来存储您的数据:这样更有效,也更安全(保证数据完整性)。然后,您可以使用日期函数,如下所示:

where descr >= date_trunc('month', current_date) 
  and descr <  dateadd(month, 1, date_trunc('month', current_date))

旁注:desc 是语言关键字,因此不是列名的好选择。我在代码 sn-ps 中将其重命名为descr

【讨论】:

以上是关于Amazon Redshift - 在 where 条件下的变量的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Amazon Redshift 中获取电子邮件地址的第二部分或第一部分?

Amazon EMR 与 Amazon Redshift

amazon-redshift 中的 CONCAT 函数

Amazon Redshift 按特定值排序

在 Amazon Redshift 中按日期透视查询

不使用 jdbc 驱动程序查询 Amazon Redshift