Presto - 如何像 postgresql 一样替代 to_char?
Posted
技术标签:
【中文标题】Presto - 如何像 postgresql 一样替代 to_char?【英文标题】:Presto - how is there an alternative to to_char like postgresql? 【发布时间】:2020-11-23 23:28:33 【问题描述】:我需要在 presto 中构建一个可以回顾过去 70 天的查询,我正在使用的表以“YYYYMMDD”的格式存储日期。
在 postgresql 中,我可以简单地将 where 子句写成
where date >= to_char(current_date - 70, 'YYYYMMDD')
它会以 YYYYMMDD 格式提取 70 天前的日期。
但是,在 PrestoSQL 中,该函数似乎不存在,是否有替代方法?
【问题讨论】:
您不应该将 DATE 值存储在 varchar 列中。 【参考方案1】:您可以使用date_format()
:
where date >= date_format(current_date - interval '70' day, '%Y%m%d')
请注意,将日期存储为字符串根本不是一个好习惯 - 您应该使用正确的 date
类数据类型 - 然后您根本不需要进行转换。
【讨论】:
【参考方案2】:您只需使用日期算术:
where date >= current_date - interval '70' day
我不确定您为什么要在严格日期相关的比较中包含字符串。
【讨论】:
我猜 OP 的date
列的类型是 varchar
。以上是关于Presto - 如何像 postgresql 一样替代 to_char?的主要内容,如果未能解决你的问题,请参考以下文章
如何将表示 EPOCH 时间的整数转换为 Athena (Presto) 中的时间戳?
Presto系列 | 五Tuning Presto SQL Query
Presto系列 | 五Tuning Presto SQL Query