
简单地显示在上面,这一直导致与我们的数据不一致。我目前正在编写一个AMDP逻辑,它利用了每个记录的月份之间的差异,但令人惊讶的是,函数MONTHS_BETWEEN()并不是对所有情况都是一致的,对于非常具体的情况,它似乎跳过了几个月。我不知道是什么导致了这一切。是否有一种方法来解决这种不一致,或者某种替代的解决方案,如果没有?谢谢。
发布于 2022-10-12 15:49:17
由于这些注释,我发现函数MONTHS_BETWEEN()的结果是根据两天之间的天数来计算的。我最初假设它只使用月份的值来计算,因此,人们期望2019年2月离2018年12月还有2个月的时间。
考虑到这一点,我想出了一个很好的解决方案,将日期转换为一个月的第一天,以保证两个给定日期值的月差。
下面是SQL代码的一个片段和相应的结果:

这个解决办法之后是一个假设,即所比较的日期都是任何给定月份的最后一天。如果情况并非如此,则需要在LAST_DAY()函数中插入使用NEXT_DAY()函数的预处理,以使其类似地工作。
*编辑:使用左()和使用'01‘的CONCATENATING手动编辑字符串日期值似乎是一种更有效和直接的方法。我不能上传截图,但下面是工作代码:
SELECT MONTHS_BETWEEN(
LEFT('2018-12-31', 8) || '01',
LEFT('2019-02-28', 8) || '01'
) AS dmonths
FROM dummyhttps://stackoverflow.com/questions/74043404
复制相似问题