`

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

阅读更多
select to_week_by_year(to_date('2010-1-1', 'yyyy-MM-dd'))
  from bak_member
where rownum = 1  //输出:1


select to_week_by_year(to_date('2010-1-3', 'yyyy-MM-dd'))
  from bak_member
where rownum = 1  //输出:1


select to_week_by_year(to_date('2010-1-4', 'yyyy-MM-dd'))
  from bak_member
where rownum = 2  //输出:1


函数如下:
create or replace function to_week_by_year(sdate in date) return number is
  Result number;
begin
  select to_char(decode(sign((to_date(to_char(sdate, 'yyyymmdd'),
                                      'yyyymmdd') +
                             to_number(decode(to_char(trunc(to_date(to_char(sdate,
                                                                             'yyyymmdd'),
                                                                     'yyyymmdd'),
                                                             'yyyy'),
                                                       'd'),
                                               '1',
                                               '8',
                                               to_char(trunc(to_date(to_char(sdate,
                                                                             'yyyymmdd'),
                                                                     'yyyymmdd'),
                                                             'yyyy'),
                                                       'd'))) - 2) -
                             last_day(to_date(to_char(sdate, 'yyyymmdd'),
                                              'yyyymmdd'))),
                        1,
                        last_day(to_date(to_char(sdate, 'yyyymmdd'),
                                         'yyyymmdd')),
                        (to_date(to_char(sdate, 'yyyymmdd'), 'yyyymmdd') +
                        to_number(decode(to_char(trunc(to_date(to_char(sdate,
                                                                        'yyyymmdd'),
                                                                'yyyymmdd'),
                                                        'yyyy'),
                                                  'd'),
                                          '1',
                                          '8',
                                          to_char(trunc(to_date(to_char(sdate,
                                                                        'yyyymmdd'),
                                                                'yyyymmdd'),
                                                        'yyyy'),
                                                  'd'))) - 2)),
                 'ww')
    into result
    from dual;

  return Result;
end to_week_by_year;
/
分享到:
评论

相关推荐

    oracle 几个日期出来

    取得当前日期是一个星期中的第几天;得到日期的季度;判定两年后是否为润年

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    读者可以学习到以下几个方面的技巧:  掌握Oracle数据库中独有的SQL强大特征;  读取并理解SQL执行计划;  快速分析并改进表现欠佳的SQL;  通过提示及配置文件等来控制执行计划;  在程序中优化查询而无需改动...

    详解oracle 日期格式(总结)

    即按照第二个参数的格式解释第一个参数。 to_char(日期,”转换格式” ) 即把给定的日期按照“转换格式”转换。 转换的格式: 表示year的:y 表示年的最后一位 yy 表示年的最后2位 yyy 表示年的最后3位 yyyy 用4位数...

    oracle实验报告

    Oracle数据库自带的几个触发器(最简单触发器格式)示例如下: -- create or replace trigger MDSYS.sdo_drop_user after drop on DATABASE declare stmt varchar2(200); BEGIN if dictionary_obj_type = 'USER...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    日期类型 date 7字节 用于存储表中的日期和时间数据,取值范围是公元前4712年1月1日至公元9999年12月31日,7个字节分别表示世纪、年、月、日、时、分和秒 二进制数据类型 row 1~2000字节 可变长二进制数据,在具体...

    Oracle9i的init.ora参数中文说明

    说明: 指定一个字符串值, 设置 TIME 数据类型的默认值, 该数据类型包含 HOUR, MINUTE 和 SECOND 这几个日期时间字段。 语法: TIME '09:26:50' (将值存储为 7 个字节)。 默认值: 从 NLS_TERRITORY 中获得 nls_time...

    最全的oracle常用命令大全.txt

    用系统管理员,查看当前数据库有几个用户连接: SQL> select username,sid,serial# from v$session; 如果要停某个连接用 SQL> alter system kill session 'sid,serial#'; 如果这命令不行,找它UNIX的进程数 SQL>...

    ORACLE,mysql,sqlserver,sybase数据库装文本软件

    自己写的数据库装载工具,平时工作中用于装载大文本文件到数据库表,也能直接装载excel,不过excel只能使用第一个sheet,且不支持合并的单元格。 jdk要求版本1.6及以上。 使用方法: java -jar lynload.jar,即可看到...

    PL.SQL.Developer.v8.0.3.1510(带注册机,2010年4月29日测试有效)

    这个专门搞oracle开发的朋友都应该知道是什么吧,注意提示一点,不要把它和oracle出的sql developer搞错了,这个是plsql developer,相信大家都应该用过。请下载试用吧,刚刚(2010年4月29日14:35:40)测试有效。

    java8源码-jdk8:Java8(又称为jdk1.8)是Java语言开发的一个主要版本。Oracle公司于2014年3月18日发布Java

    新增了非常多的特性,我们主要讲解以下几个: Lambda 表达式:Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)。 方法引用:方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的...

    SQL必知必会(第3版)--详细书签版

     提示:为某任务给出建议或一种更简单的方法。    注意:提醒可能出现的问题,避免出现事故。    新术语,提供新的基本词汇的清晰定义。  表示读者可以自己输入的代码。  强调某个程序执行时的输出。  告诉...

    orcale常用命令

    用系统管理员,查看当前数据库有几个用户连接: SQL> select username,sid,serial# from v$session; 如果要停某个连接用 SQL> alter system kill session 'sid,serial#'; 如果这命令不行,找它UNIX的进程数 SQL>...

    java面试宝典

    244、客服端调用EJB对象的几个基本步骤 56 245、 如何给weblogic指定大小的内存? 56 246、如何设定的weblogic的热启动模式(开发模式)与产品发布模式? 57 247、如何启动时不需输入用户名与密码? 57 248、在...

    千方百计笔试题大全

    244、客服端调用EJB对象的几个基本步骤 56 245、 如何给weblogic指定大小的内存? 56 246、如何设定的weblogic的热启动模式(开发模式)与产品发布模式? 57 247、如何启动时不需输入用户名与密码? 57 248、在weblogic...

    JAVA面试题最全集

    第一,谈谈final, finally, finalize的区别。 final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的...

Global site tag (gtag.js) - Google Analytics