首页 > 解决方案 > 从旧版本 Presto 中的日期开始的周开始日期

问题描述

我有一个有点直截了当的问题,我试图在 Presto 中找到给定日期的星期开始日期(星期日)。通常我会尝试

DATE_FORMAT(date(DateID),'%X%V') as WeekStartingDate,

但是我使用的 0.144 文档说它们目前不受支持。我在 MySQL 环境中使用的一种方法类似于

DATE_ADD(DateID, INTERVAL(1-DAYOFWEEK(DateID)) DAY)

但是 Presto 没有这个DAYOFWEEK功能。我也试过做

concat( cast(year(DateID) as varchar) , cast(week(DateID) as varchar)) as WeekStartingDate,

但问题是数据没有正确排序。例如,我将在 202010 旁边获得 20201。有没有我没有想到的推荐解决方案?

标签: presto

解决方案


您也可以lpad在第二次尝试中使用:

concat( cast(year(DateID) as varchar) , lpad(cast(week(DateID) as varchar),2,'0') ) as WeekStartingDate,

这最终会202001, 202002...., 202010, 202011, etc..得到很好的排序。


推荐阅读