在 Amazon Redshift 中,虽然我已将 service_date 列指定为 Date 数据类型,但是当我在 IN 运算符中获取日期时,它仅使用引号

Posted

技术标签:

【中文标题】在 Amazon Redshift 中,虽然我已将 service_date 列指定为 Date 数据类型,但是当我在 IN 运算符中获取日期时,它仅使用引号【英文标题】:In Amazon Redshift though I have specified service_date column as Date datatype but when I am taking date in IN operator it working with quotes only 【发布时间】:2021-12-28 18:50:55 【问题描述】:
select * 
from nsclc_thought_spot 
where patientid = 11000001 
  and service_date in ('2019-07-08', '2019-07-10')
order by patientid, service_date 

正在正确返回结果

但这并没有按预期工作:

select * 
from nsclc_thought_spot 
where patientid = 11000001 
  and service_date in (2019-07-08, 2019-07-10)
order by patientid, service_date 

此查询未返回结果。

如果我已将service_date 列定义为date,那么为什么我必须在redshift 中的IN 运算符中传递引号中的值?

【问题讨论】:

【参考方案1】:

因为 2019-07-08 表示整数 2019 减去整数 7 减去整数 8 等于整数 2004。SQL 中没有引号的数字被视为数值。要被解释为其他内容,您需要引用它们(这是一个文本值),然后需要将它们转换为所需的数据类型。在这种情况下,'2019-07-08' 是一个文本值,但 Redshift 会隐式地将其转换为日期,以便与列数据“service_date”进行比较。

如果您想明确地执行此操作,可以将转换添加到值 - ... service_date IN ('2019-07-08'::date,'2019-07-10'::date) ... - 这可能会让你更清楚。

【讨论】:

以上是关于在 Amazon Redshift 中,虽然我已将 service_date 列指定为 Date 数据类型,但是当我在 IN 运算符中获取日期时,它仅使用引号的主要内容,如果未能解决你的问题,请参考以下文章

我们可以通过没有密码的linux shell脚本连接amazon redshift吗?

如何更新 Amazon Redshift 上的 Python 库?

在 Amazon Redshift 中使用窗口函数时需要 GROUP BY 聚合

从 tableau 服务器连接 amazon redshift 服务器

虽然我已将我的 Visual Studio 安装程序的语言更改为韩语,但卸载程序在卸载启动时显示为英文

Amazon EMR 与 Amazon Redshift