`

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 sql 星期几 一个月的第几天等 方法

    在这个资源中,我们将讨论如何使用 Oracle SQL 来获取星期几、一个月的第几天、一个年的第几天等信息。 一、获取星期几 Oracle SQL 提供了多种方式来获取星期几,下面是一些常见的方法: 1. 使用 TO_CHAR 函数 ...

    oracle日期查询相关

    - `WW`: 第几周,一年中的第几周。 - `W`: 第几天,一周中的第几天。 - `Q`: 第几季度。 例如,要获取当前日期的年月日格式,可以使用以下SQL语句: ```sql SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL; ``` ...

    在oracle中处理日期大全

    在 Oracle 中,日期处理是数据库管理系统中一个非常重要的方面。处理日期信息需要精准和细致,否则可能会出现错误的结果。在本节中,我们将详细介绍 Oracle 中日期处理的各种方法和函数。 日期和时间格式 在 ...

    oracle_日期_加减方法

    - `NEXT_DAY(date, dayOfWeek)`:返回给定日期之后的第一个指定的星期几。 - `ROUND(date, format)`:按指定格式对日期进行四舍五入。 - `TRUNC(date, format)`:按指定格式截取日期,例如去除时间部分,只保留...

    oracle 几个日期出来

    这里`'DDD'`表示返回当前日期是一年中的第几天(1-366)。 ### 5. 总结 以上介绍了在Oracle数据库中处理日期的一些常用技巧和方法,包括获取当前日期是一周中的第几天、获取当前日期所在的季度、判断两年后的日期...

    oracle 日期处理 总结

    以下是对Oracle日期处理的一些关键知识点的详细说明: 1. **将时间字符串转换为时间** Oracle提供了`to_date()`函数将字符串转换为日期类型。这个函数需要两个参数:要转换的字符串和匹配的转换格式。例如,`to_...

    oracle sql 根据年份、周数取日期

    这里,我们使用`trunc`函数将日期截断到月份的第一天,然后通过添加行号减一来生成一年中的每一天。通过`WHERE`子句筛选出所有周日(即`to_char(wwm,'D') = 1`),从而得到每周的第一天。 接下来,我们需要找到每周...

    ORACLE常用日期函数集合

    - `WW`: 返回一年中的第几周。 ```sql SELECT to_char(sysdate, 'WW') FROM dual; ``` - `W`: 返回一个月中的第几周。 ```sql SELECT to_char(sysdate, 'W') FROM dual; ``` 5. **日格式** - `DDD`: 返回...

    oracle日期处理全集

    以下是对给定文件中提及的Oracle日期处理函数的详细说明: 1. **add_months(d, n)**: 此函数将日期d加上n个月,返回新的日期。例如,`add_months(SYSDATE,1)`会返回当前日期往后一个月的日期。 2. **last_day(d)**...

    数据库oracle中日期处理

    - `NEXT_DAY(date, day_of_week)`:返回指定日期之后的第一个指定的星期几。 5. **日期间隔操作**: 使用`+`和`-`运算符可以进行日期的加减,例如`date + interval '1' day`表示日期加一天。 6. **日期转换**: ...

    Oracle中几个关于日期方面的SQL实例

    以上示例展示了Oracle数据库在处理日期和时间方面的一些基本操作,包括获取当前日期、获取日期在一个月或一年中的位置、日期的加减运算以及判断闰年等。这些函数和表达式在实际的数据库查询和报表生成中非常常用,...

    oracle日期操作举例

    这些示例分别展示了如何将日期按照不同的格式输出,包括标准日期时间格式、年份中的第几天等。 #### 三、日期转换 在Oracle中,还可以实现日期之间的转换。 **1. 字符串转日期** ```sql SELECT TO_DATE('2003-10-...

    oracle日期处理函数大全

    3. **求星期几**:可以使用`TO_CHAR`函数配合日期格式来获取一周中的星期几。例如,`TO_CHAR(TO_DATE('2002-08-26', 'YYYY-MM-DD'), 'DAY')`返回星期一,如果需要英文表示,可以添加参数`NLS_DATE_LANGUAGE`,如`NLS...

    oracle插入日期

    在Oracle数据库中,处理日期类型的数据是一项非常常见的需求。无论是插入、更新还是查询与日期相关的数据,都需要掌握一定的技巧和方法。本次讨论的主题是“Oracle插入日期”,这不仅包括了如何在Oracle数据库中插入...

    请教用sql实现通过已知的年,月,第几周和周几,得到具体的日期

    在SQL中,根据已知的年、月、第几周和周几来获取具体的日期是一项常见的日期处理任务,尤其在数据分析或报表生成时非常有用。本文将深入探讨如何使用SQL来实现这一功能,并以MS SQL Server为例进行示例说明。 首先...

    oracle日期函数全面总结

    5. **NEXT_DAY(date, weekday)**: 返回指定日期之后的第一个指定星期几的日期。 ```sql SELECT NEXT_DAY(SYSDATE, '星期一') FROM DUAL; ``` 6. **TRUNC(date)**: 截断日期到指定的精度,如年、月、日等。默认...

Global site tag (gtag.js) - Google Analytics