我有一个每月的金额,我需要在当月的天数上平均分配。数据如下所示:
Month Value
----------- ---------------
01-Jan-2012 100000
01-Feb-2012 121002
01-Mar-2012 123123
01-Apr-2012 118239
我必须将 1 月的金额分摊超过 31 天,将 2 月的金额分摊超过 29 天,并将 3 月的金额分摊超过 31 天。
如何使用 PL/SQL 找出月份列中给出的月份中有多少天?
最佳答案
不要使用 to_char()
和日期做算术时的东西。
字符串是字符串,日期是日期。请尊重数据类型并使用它:1+trunc(last_day(date_column))-trunc(date_column,'MM')
确实,这是正确的。它计算该月最后一天的值与第一天的值之间的差值(显然始终为 1,因此我们需要再次添加此 1)。
您一定不要忘记使用 trunc()
如果您的日期列包含时间,则函数,因为 last_day()
保留时间分量。
关于sql - 一个月的天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13766611/