首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MONTHS_BETWEEN('2018-12-31','2019-02-28')产出1?

MONTHS_BETWEEN('2018-12-31','2019-02-28')产出1?
EN

Stack Overflow用户
提问于 2022-10-12 14:15:52
回答 1查看 77关注 0票数 3

简单地显示在上面,这一直导致与我们的数据不一致。我目前正在编写一个AMDP逻辑,它利用了每个记录的月份之间的差异,但令人惊讶的是,函数MONTHS_BETWEEN()并不是对所有情况都是一致的,对于非常具体的情况,它似乎跳过了几个月。我不知道是什么导致了这一切。是否有一种方法来解决这种不一致,或者某种替代的解决方案,如果没有?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-12 15:49:17

由于这些注释,我发现函数MONTHS_BETWEEN()的结果是根据两天之间的天数来计算的。我最初假设它只使用月份的值来计算,因此,人们期望2019年2月离2018年12月还有2个月的时间。

考虑到这一点,我想出了一个很好的解决方案,将日期转换为一个月的第一天,以保证两个给定日期值的月差。

下面是SQL代码的一个片段和相应的结果:

这个解决办法之后是一个假设,即所比较的日期都是任何给定月份的最后一天。如果情况并非如此,则需要在LAST_DAY()函数中插入使用NEXT_DAY()函数的预处理,以使其类似地工作。

*编辑:使用左()和使用'01‘的CONCATENATING手动编辑字符串日期值似乎是一种更有效和直接的方法。我不能上传截图,但下面是工作代码:

代码语言:javascript
复制
SELECT MONTHS_BETWEEN(
         LEFT('2018-12-31', 8) || '01',
         LEFT('2019-02-28', 8) || '01'
       ) AS dmonths
  FROM dummy
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74043404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档