sql - 一个月的天数

标签 sql oracle plsql date-arithmetic

我有一个每月的金额,我需要在当月的天数上平均分配。数据如下所示:

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/

相关文章:

oracle - 在更新后触发器上获取更新列名的有效方法

sql - 当 JOB 执行的过程没有完成时,JOB 何时再次执行它时会发生什么?

MYSQL:SELECT DISTINCT 仅显示唯一的行

sql - 在 Oracle SQL 中什么时候需要使用分号和斜线?

c - 我无法在 ubuntu 上编译 OCILIB

mysql - 适用于主要数据库的更新语法

sql - 使用预定义的系统函数将分隔字符串(或列)转换为 Oracle 中的行

mysql - 如何在 SQL 中获取每周平均销售商品数?

sql - OPENROWSET 查询相同服务器或不同服务器

C# Linq to MySQL query with join 会产生错误的 SQL?