首页 > 解决方案 > 如何在dremio中计算每行月的最后一天?

问题描述

我有一个正确转换的日期列,我想从中创建一个新列,即该月最后一天的日期。

例子:

current_datefield         end_of_month_date
2019-03-01                 2019-03-31   
2020-01-29                 2020-01-31

我不知道如何在dremio中做到这一点,我试过了EXTRACT,Date_PART

没有解决方案有效。先感谢您。

标签: sqldremio

解决方案


由于 Dremio 是专有的,而且我们不在我工作的地方运行它,所以我无法为您测试特定代码,但我可以解释这种方法。我将把确切的语法留给你。

从广义上讲,解决方案是使用您必须计算下个月第一天的日期值,然后减去一天。这是因为每个月都有第一天,每个 SQL 引擎在从第一个减去一个时都会得到正确的 EOM 日期。在大多数系统中,有几种方法可以做到这一点。

那种“蛮力”的方法是获取您当前的日期current_datefield,然后EXTRACT是年份和月份。在月份中添加一个。使用这些值和硬编码01来“构建”下个月的第一天。那里可能会TO_DATE涉及到一个或一些此类。

现在只需将该值包装在一个DATE_ADD函数中以减去一个。


推荐阅读