如何在 dremio 中计算每行每月的最后一天?



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

例:

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

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

没有一个解决方案有效。提前谢谢你。

函数"LAST_DAY"对我有用。

像这样使用:

LAST_DAY(date_field)

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

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

这种"蛮力"方法是将您当前的日期current_datefield,然后EXTRACT年份和月份。向月份添加一个。使用这些值和硬编码01来"构建"下个月的第一天。那里可能会涉及一个TO_DATE或一些类似的问题。

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

如果你是SQL Server,有一个名为EOMONTH的函数。 使用 EOMONTH 函数,您可以根据自己的要求编写查询。 查看此YouTube视频,为您的要求提供解决方案: https://youtu.be/QsQDHux1C4A

最新更新