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

Sql 如何计算dremio中每行每月的最后一天?,sql,dremio,Sql,Dremio,我有一个正确铸造的日期列,我想创建一个新的列,从这个月的最后一天的日期 例如: current_datefield end_of_month_date 2019-03-01 2019-03-31 2020-01-29 2020-01-31 我不知道如何在德雷米奥做到这一点,我已经尝试了EXTRACT,Date\u PART 这些解决方案中没有一个是有效的。先谢谢你 由于Dremio是专有的,我们不在我工作的地

我有一个正确铸造的日期列,我想创建一个新的列,从这个月的最后一天的日期

例如:

current_datefield         end_of_month_date
2019-03-01                 2019-03-31   
2020-01-29                 2020-01-31
我不知道如何在德雷米奥做到这一点,我已经尝试了
EXTRACT,Date\u PART


这些解决方案中没有一个是有效的。先谢谢你

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

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

这种“暴力”的方式是取你当前的日期,
current\u datefield
,然后
提取年份和月份。每月增加一个。使用这些值和硬编码的
01
来“构建”下个月的第一个月。到目前为止,可能会有一个
或类似的事件


现在,只需将该值包装在一个
DATE\u ADD
函数中即可减去一个值。

如果您是SQL Server,则有一个名为EOMONTH的函数。 使用EOMONTH函数,您可以为您的需求编写查询。 查看此youtube视频,为您的需求提供解决方案:

功能“最后一天”对我很有用

这样使用:

LAST_DAY(date_field)

我尝试了一个月,但这不是一个解决方案,特别是在德雷米奥。谢谢你!这是一个绕口令,但我正在努力,我相信你的逻辑是正确的。