`
winzenghua
  • 浏览: 1369072 次
  • 性别: Icon_minigender_2
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

oracle 自然周跨年度 一周分成两部分

阅读更多

CREATE OR REPLACE FUNCTION UDF_WEEKOFYEAR ( V_DATE IN date ,formate IN VARCHAR2 ) RETURN char
AS
v_ret char(6);
v_ret1 char(2);
v_ret3 NUMBER;
BEGIN

v_ret3 := TO_CHAR (v_date, 'iw');
IF v_ret3 = 1 AND TO_CHAR (v_date, 'mm') = '12' then --判断是否是最后一个月 周次算成下年了第一周

SELECT TO_CHAR(DECODE(SIGN((V_DATE
+TO_NUMBER(DECODE(TO_CHAR(TRUNC(V_DATE,'YYYY'),'D'),'1','8',
TO_CHAR(TRUNC(V_DATE,'YYYY'),'D'))) - 2)
-LAST_DAY(V_DATE)),1,LAST_DAY(V_DATE),
(V_DATE
+TO_NUMBER(DECODE(TO_CHAR(TRUNC(V_DATE,'YYYY'),'D'), '1','8',
TO_CHAR(TRUNC(V_DATE,'YYYY'),'D'))) - 2)),'WW') as week
into v_ret1 FROM DUAL;
return to_char(v_date,'yyyy')||v_ret1;
end if;

IF v_ret3 = 53 AND TO_CHAR (v_date, 'mm') = '01' then--判断是否是第一个月 周次算成去年了最后一周 那么拆分成两个周

SELECT TO_CHAR(DECODE(SIGN((V_DATE
+TO_NUMBER(DECODE(TO_CHAR(TRUNC(V_DATE,'YYYY'),'D'),'1','8',
TO_CHAR(TRUNC(V_DATE,'YYYY'),'D'))) - 2)
-LAST_DAY(V_DATE)),1,LAST_DAY(V_DATE),
(V_DATE
+TO_NUMBER(DECODE(TO_CHAR(TRUNC(V_DATE,'YYYY'),'D'), '1','8',
TO_CHAR(TRUNC(V_DATE,'YYYY'),'D'))) - 2)),'WW') as week
into v_ret1 FROM DUAL;
return to_char(v_date,'yyyy')||v_ret1;
end if;

if to_char(trunc(v_date,'yyyy'),'iw') = 53 and TO_CHAR (v_date, 'mm') = '01' then --判断是否是第一个月 周次算成去年了最后一周
v_ret := TO_CHAR (v_date, formate) + 1; --以后的周次向后推一
RETURN v_ret;
end if;

v_ret := TO_CHAR (v_date, formate); --正常情况下按自然周处理
RETURN v_ret;

END;

分享到:
评论

相关推荐

    Oracle 获得某日期属于一年中的第几个自然周

    标题“Oracle 获取某日期属于一年中的第几个自然周”指的是在Oracle数据库系统中,通过SQL查询来确定一个特定日期在当年是第几周的问题。在实际业务中,这样的功能可能用于统计、报告或者数据分析,例如,公司可能...

    Oracle 获得某日期属于该前月中的第几个自然周

    在Oracle数据库中,计算某个日期属于其前一个月中的第几个自然周是一项常见的需求,这在数据分析、报表生成或业务逻辑处理中很有用。这个任务可以通过编写一个自定义函数来实现,例如提供的`to_week_by_month.fnc`...

    oracle到sqlserver 跨库查询

    .oracle 到 SQL Server 跨库查询 Oracle 到 SQL Server 跨库查询是指通过网关工具将数据从 SQL Server 数据库中抽取到 Oracle 数据库中。这个过程需要安装和配置网关软件,并进行相应的设置和配置。 一、网关软件...

    oracle跨库查询

    oracle跨库查询 --语法 /*定义 create [public] databse link _link_name connect to _username identified by _passowrd using '_servername/_serverurl'; */ /*调用 select * from _table_name@_link_name */...

    ORACLE数据库跨平台迁移

    ORACLE数据库跨平台迁移 ORACLE数据库跨平台迁移是指将WINDOWS平台上的ORACLE数据库迁移到LINUX平台,当前LINUX平台只装数据库软件,不建库。本文将详细介绍如何使用RMAN Convert database特性来实现数据库跨平台...

    Oracle透明网关跨库查询SQLServer.docx

    比如,在一个系统中可能同时使用Oracle和SQLServer作为数据存储,这就需要一种机制来实现这两个不同类型的数据库之间的数据交换。Oracle透明网关(Oracle GoldenGate Transparent Gateway)就是一种能够实现这种需求...

    一周备份oracle数据库,每天一次

    一周循环备份oracle数据库,只用修改链接,设置任务管理器就可以. set oracle_username="l_sys" set oracle_password="123456" set local_tnsname="oradb" 修改以上配置,定时执行即可

    ORACLE跨服务器访问数据库

    ORACLE跨服务器访问数据库

    oracle跨数据库查询授权

    支持授权非自身表空间的用户权限。 跨数据库查询对方表数据,以及复制粘贴。

    oracle 跨平台迁移数据

    Oracle数据库的跨平台迁移是一项关键任务,尤其是在企业级环境中,当需要将数据库从一个操作系统迁移到另一个操作系统时。Oracle 10g引入了改进,使得在相同字节序的平台上进行跨平台迁移变得更加简便。本文将深入...

    oracle实习周前期准备

    在进入Oracle实习周之前,进行全面的前期准备是至关重要的,这将确保你在实训期间能够高效地学习和工作。Oracle作为全球领先的数据库管理系统,其技术深度和广度都非常大,因此,扎实的基础知识和适当的预习将使你在...

    oracle sql计算一段时间内(除去周六日)的秒数

    利用 oracle sql 实现 计算一段时间内(除去周六日)的秒数

    Oracle数据迁移之跨平台全库迁移

    Oracle 是一款非常优秀的 DBMS 软件。它可以运行在多种操作系统平台上,如: Windows、Linux、AIX 和 Solaris 等等。很多时候,由于各种各样的原因,我们需要在一同 的 OS 平台之间进行 Oracle 数据库的迁移。 ...

    现一个对Oracle数据库封装的C++跨平台程序,在所有平台上都可以简单的访问数据

    本项目的目标是实现一个C++库,它能够跨平台地封装Oracle数据库接口,使得开发者无论在Windows、Linux、macOS或其他支持C++的平台上,都能够方便地进行数据库操作。 在实现这个C++跨平台程序时,以下是一些关键知识...

    oracle触发器的创建和跨数据库查询.zip

    Oracle触发器是数据库对象之一,它允许在特定的数据库事件(如INSERT、UPDATE或DELETE)发生时自动执行一段PL/SQL代码。触发器是数据库级的程序,可以在数据更改前或后执行,用来实现复杂的业务规则和逻辑。在这个...

    实现ORACLE跨库访问 DBLINK

    Oracle数据库的跨库访问是通过DBLINK(Database Link)机制实现的,这允许用户在一个数据库中执行查询,同时访问另一个远程数据库的数据。DBLINK提供了一种透明的方式,使得分布式数据库系统中的数据能够被轻松地...

    跨Oracle和server查询

    ### 跨Oracle与SQL Server查询知识点详解 #### 一、环境搭建与配置 **1. 客户端软件安装** 为了实现跨Oracle和SQL Server的查询功能,首先需要在PC机上安装相应的客户端软件,包括Oracle客户端软件以及SQL Server...

    Oracle数据库的周数计算

    在“WW”格式中,每年的1月1日被视为第一周的开始,而该周的最后一天则是1月1日后的第六天。基于这一定义,我们可以得出以下计算公式: - **每周的第一天**:`date + 周 * 7 - 7` - **每周的最后一天**:`date + 周...

    Oracle和跨页选择(新手)

    本主题主要关注"Oracle和跨页选择",这涉及到数据库查询中的分页操作,对于新手来说是理解和掌握数据库使用的重要一环。 在Oracle中,进行数据查询时,我们经常需要对结果集进行分页展示,以方便用户逐页浏览大量...

Global site tag (gtag.js) - Google Analytics