SQL 计算一年有多少天

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程