在 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 服务器