SQL 计算一年有多少天,该解决方案只适用于 Oracle,使用 TO_CHAR
函数把一年的最后一天格式化为用 3 位数字表示的日期序号。
SQL 计算一年有多少天 问题描述
计算一年有多少天,该解决方案只适用于 Oracle。
SQL 计算一年有多少天 解决方案
使用 TO_CHAR
函数把一年的最后一天格式化为用 3 位数字表示的日期序号。
1 select 'Days in 2005: '||
2 to_char(add_months(trunc(sysdate,'y'),12)-1,'DDD')
3 as report
4 from dual
5 union all
6 select 'Days in 2004: '||
7 to_char(add_months(trunc(
8 to_date('01-SEP-2004'),'y'),12)-1,'DDD')
9 from dual
REPORT
-----------------
Days in 2005: 365
Days in 2004: 366
SQL 计算一年有多少天 扩展知识
首先调用 TRUNC
函数返回给定日期所属年份的第一天,如下所示。
select trunc(to_date('01-SEP-2004'),'y')
from dual
TRUNC(TO_DA
-----------
01-JAN-2004
下一步,调用 ADD_MONTHS
为截取的日期值加上一年(12 个月)。然后,再减去一天,得到最初的给定日期所属年份的最后一天。
select add_months(
trunc(to_date('01-SEP-2004'),'y'),
12) before_subtraction,
add_months(
trunc(to_date('01-SEP-2004'),'y'),
12)-1 after_subtraction
from dual
BEFORE_SUBT AFTER_SUBTR
----------- -----------
01-JAN-2005 31-DEC-2004
现在已经得到了目标年份的最后一天,接下来只要调用 TO_CHAR
返回一个 3 位数字即可,该数字表示最后一天在这一年中的日期序号(第 1 天、第 50 天,等等)。
select to_char(
add_months(
trunc(to_date('01-SEP-2004'),'y'),
12)-1,'DDD') num_days_in_2004
from dual
NUM
---
366