`
小嘴看世界
  • 浏览: 131789 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

oracle 查询周的第一天日期

    博客分类:
  • DB
阅读更多
项目的开发中需要用到一个查询周的第一天日期的函数 搜索N久很难找到解决的方法 只要自己写一个先用着 代码如下 a_week格式为 'YYYYIW' 如 '200801'表示2008年的第一周
周使用IW方式计算 如果一年当中第52周别之后至当年的12月31日之间,还有大于或等于4天的话,则定为当年的第53周,否则剩余这些天数被归为下一年的第1周
CREATE OR REPLACE FUNCTION f_week_to_date(a_week varchar2) RETURN CHAR IS
  v_first_date   char(10);
  v_date_of_week number(1);

BEGIN
  select to_char(to_date(substr(a_week, 1, 4) || '0101', 'yyyymmdd'), 'D')
    into v_date_of_week
    from dual;
  v_date_of_week := v_date_of_week - 1;
  if v_date_of_week <= 4 then
    select TO_CHAR(TO_DATE(SUBSTR(a_week, 1, 4) || '0101', 'yyyymmdd') +
                   SUBSTR(a_week, 5, 2) * 7 - 7 - v_date_of_week + 1,
                   'yyyy-mm-dd')
      into v_first_date
      from dual;
  else
    select TO_CHAR(TO_DATE(SUBSTR(a_week, 1, 4) || '0101', 'yyyymmdd') +
                   SUBSTR(a_week, 5, 2) * 7  - v_date_of_week + 1,
                   'yyyy-mm-dd')
      into v_first_date
      from dual;
  end if;

  return v_first_date;

END;
分享到:
评论

相关推荐

    ORACLE获取周月季年的第一天和最后一天

    获取本周的第一天,可以使用`TRUNC`函数结合日期部分'W'或'd'(代表星期)。'd'会返回周内的第一天,通常为周一。例如: ```sql SELECT TRUNC(SYSDATE, 'd') + 1 FROM DUAL; -- 本周第一天(周一) ``` 本周的...

    oracle日期查询相关

    ### Oracle日期查询相关知识点 #### 一、获取系统当前日期与时间 在Oracle数据库中,可以通过`SYSDATE`函数来获取系统的当前日期和时间。这是一个非常实用的功能,尤其是在需要记录数据的操作时间点时。 **示例:...

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

    `TO_CHAR(date, 'WW')`可以返回日期所在的月份中的周数,但这个周是以星期日为一周的第一天计算的,并且第一周可能不包含整个星期一。为了得到符合ISO标准的自然周,我们需要做一些额外的处理。 ISO标准定义的自然...

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

    要获取某个日期属于前一个月的第几个自然周,我们首先需要确定该日期属于哪个月,然后找到当月的第一天。接着,我们需要找出该月的第一天是周几,因为这是计算自然周的起点。如果这个月的第一天是周一,那么这个月的...

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

    但是,上述代码示例中使用了一个较为复杂的查询方法,通过计算每周的第一天(通常是周日)和最后一天(通常是周六)来确定周的范围。 #### 示例解析 让我们逐步分析上述代码示例: ```sql -- 首先,我们创建一个...

    计算周次(未规定每年第一天是属于第一周)

    然而,这里的描述暗示我们可以自定义这一规则,比如可以选择一周的开始日可以是周一、周日或者其他任何一天,而且第一周的定义也可能是包含新年第一天的那个周。 接下来,我们要实现“动态设置判断条件”。这意味着...

    Oracle 获取上周一到周末日期的查询sql语句

    `to_char(to_date('20130906','yyyymmdd'), 'd') from dual`,这行代码的作用是确定给定日期(2013年9月6日)是周内的第几天,结果为6,表示这是本周的第六天,因为Oracle默认周日是一周的第一天。 接着,我们关注...

    16种oracle查询日期语句.pdf

    使用`to_char(sysdate, 'WW')`可以获取当前日期是本月的第几周,其中`'WW'`格式模型表示星期几作为一周的开始,而`'W'`表示一周的第一天是周日。 2. 获取当前日期是星期几(数字表示): `to_char(sysdate, 'D')`...

    oracle 日期处理 总结

    Oracle允许在日期上进行加减操作,例如`date + interval '1' day`表示在日期上增加一天,`date - interval '3' hour`表示减去三小时。 4. **求某天是星期几** 可以使用`to_char(date, 'DY')`来获取日期对应的星期...

    16种oracle查询日期语句.docx

    2. 获取当前日期是一周中的第几天(注意星期日为第一天): `to_char(sysdate,'D')`会返回一个数字,代表一周中的第几天,其中1表示星期日。 3. 显示当前日期是星期几的中文名称: 虽然示例中没有给出具体的函数...

    ORACLE常用日期函数集合

    - `D`: 返回一周中的第几天,其中1代表周日。 ```sql SELECT to_char(sysdate, 'D') FROM dual; ``` - `DY`: 返回一周中的星期几的缩写。 ```sql SELECT to_char(sysdate, 'DY') FROM dual; ``` 6. **小时...

    Oracle数据库的周数计算

    - **每周的第一天**:`date + 周 * 7 - 7` - **每周的最后一天**:`date + 周 * 7 - 1` 其中,`date` 表示每年的第一天,即1月1日;`周` 表示目标周数。通过调整公式中的`周`值,可以轻松地计算出任意周的第一天和...

    数据库oracle中日期处理

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

    oracle存储过程+日期+定时任务Job

    这些自定义函数未在示例代码中给出,但通常会根据 Oracle 的日期处理规则来实现,例如将周一作为每周的第一天。 #### 四、定时任务 Job 在 Oracle 中,可以使用 `DBMS_SCHEDULER` 包来创建定时任务,以自动调用...

    oracle使用to_date查询一周的第一天日期

    在上述的标题和描述中,提到的是一个自定义函数,该函数用于根据ISO 8601标准('YYYYIW'格式)获取指定年份的一周第一天的日期。'YYYYIW'格式中的'IW'代表ISO周,这是以周一作为一周的开始,并且可能包含52或53周的...

    Oracle的SQL实现日期的功能

    4. **TRUNC**:截断日期到指定的部分,如TRUNC(SYSDATE, 'MONTH')会得到当前月份的第一天。 5. **TO_CHAR** 和 **TO_DATE**:这两个函数用于日期和字符串之间的转换。TO_CHAR(date, 'format_model')可以将日期格式...

Global site tag (gtag.js) - Google Analytics