项目的开发中需要用到一个查询周的第一天日期的函数 搜索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;
分享到:
相关推荐
获取本周的第一天,可以使用`TRUNC`函数结合日期部分'W'或'd'(代表星期)。'd'会返回周内的第一天,通常为周一。例如: ```sql SELECT TRUNC(SYSDATE, 'd') + 1 FROM DUAL; -- 本周第一天(周一) ``` 本周的...
### Oracle日期查询相关知识点 #### 一、获取系统当前日期与时间 在Oracle数据库中,可以通过`SYSDATE`函数来获取系统的当前日期和时间。这是一个非常实用的功能,尤其是在需要记录数据的操作时间点时。 **示例:...
`TO_CHAR(date, 'WW')`可以返回日期所在的月份中的周数,但这个周是以星期日为一周的第一天计算的,并且第一周可能不包含整个星期一。为了得到符合ISO标准的自然周,我们需要做一些额外的处理。 ISO标准定义的自然...
要获取某个日期属于前一个月的第几个自然周,我们首先需要确定该日期属于哪个月,然后找到当月的第一天。接着,我们需要找出该月的第一天是周几,因为这是计算自然周的起点。如果这个月的第一天是周一,那么这个月的...
但是,上述代码示例中使用了一个较为复杂的查询方法,通过计算每周的第一天(通常是周日)和最后一天(通常是周六)来确定周的范围。 #### 示例解析 让我们逐步分析上述代码示例: ```sql -- 首先,我们创建一个...
然而,这里的描述暗示我们可以自定义这一规则,比如可以选择一周的开始日可以是周一、周日或者其他任何一天,而且第一周的定义也可能是包含新年第一天的那个周。 接下来,我们要实现“动态设置判断条件”。这意味着...
`to_char(to_date('20130906','yyyymmdd'), 'd') from dual`,这行代码的作用是确定给定日期(2013年9月6日)是周内的第几天,结果为6,表示这是本周的第六天,因为Oracle默认周日是一周的第一天。 接着,我们关注...
使用`to_char(sysdate, 'WW')`可以获取当前日期是本月的第几周,其中`'WW'`格式模型表示星期几作为一周的开始,而`'W'`表示一周的第一天是周日。 2. 获取当前日期是星期几(数字表示): `to_char(sysdate, 'D')`...
Oracle允许在日期上进行加减操作,例如`date + interval '1' day`表示在日期上增加一天,`date - interval '3' hour`表示减去三小时。 4. **求某天是星期几** 可以使用`to_char(date, 'DY')`来获取日期对应的星期...
2. 获取当前日期是一周中的第几天(注意星期日为第一天): `to_char(sysdate,'D')`会返回一个数字,代表一周中的第几天,其中1表示星期日。 3. 显示当前日期是星期几的中文名称: 虽然示例中没有给出具体的函数...
- `D`: 返回一周中的第几天,其中1代表周日。 ```sql SELECT to_char(sysdate, 'D') FROM dual; ``` - `DY`: 返回一周中的星期几的缩写。 ```sql SELECT to_char(sysdate, 'DY') FROM dual; ``` 6. **小时...
- **每周的第一天**:`date + 周 * 7 - 7` - **每周的最后一天**:`date + 周 * 7 - 1` 其中,`date` 表示每年的第一天,即1月1日;`周` 表示目标周数。通过调整公式中的`周`值,可以轻松地计算出任意周的第一天和...
- `NEXT_DAY(date, day_of_week)`:返回指定日期之后的第一个指定的星期几。 5. **日期间隔操作**: 使用`+`和`-`运算符可以进行日期的加减,例如`date + interval '1' day`表示日期加一天。 6. **日期转换**: ...
这些自定义函数未在示例代码中给出,但通常会根据 Oracle 的日期处理规则来实现,例如将周一作为每周的第一天。 #### 四、定时任务 Job 在 Oracle 中,可以使用 `DBMS_SCHEDULER` 包来创建定时任务,以自动调用...
在上述的标题和描述中,提到的是一个自定义函数,该函数用于根据ISO 8601标准('YYYYIW'格式)获取指定年份的一周第一天的日期。'YYYYIW'格式中的'IW'代表ISO周,这是以周一作为一周的开始,并且可能包含52或53周的...
4. **TRUNC**:截断日期到指定的部分,如TRUNC(SYSDATE, 'MONTH')会得到当前月份的第一天。 5. **TO_CHAR** 和 **TO_DATE**:这两个函数用于日期和字符串之间的转换。TO_CHAR(date, 'format_model')可以将日期格式...