我自己实现的脚本:

select

T31267.CREATED_DATE as F31265,

(select to_char(to_date(T31267.CREATED_DATE,'yyyy-mm-dd'),'yyyyiw') from dual) as week

from  LEAP.HMDM_DM_DLR_CLUE T31267

总结:

select to_char(TO_DATE('20110101', 'YYYYMMDD'), 'yyyyiw') as week, --oracle求当年的第几周  #常用,但是有一个问题,比如20181231是周一,但是却计算结果为201801,即2018第一周内。
       to_char(TO_DATE('20110101', 'YYYYMMDD'), 'yyyyww') as week2, --oracle求当年的第几周
       to_char(TO_DATE('20110101', 'YYYYMMDD'), 'yyyy') as year, --oracle求第几年
       to_char(TO_DATE('20110101', 'YYYYMMDD'), 'yyyymm') as month, --oracle求当年的第几月
       to_char(TO_DATE('20110101', 'YYYYMMDD'), 'yyyyddd') as day, --oracle求当年的第几天
       to_char(TO_DATE('20110401', 'YYYYMMDD'), 'yyyyq') as quarter -- oracle求当年的第几季度

from dual

ww Same day of the week as the first day of the year  按年度1月1日的第一天为每周第一天
iw Same day of the week as the first day of the ISO week, which is Monday  每周一
w Same day of the week as the first day of the month  按月份1日的第一天作为每周第一天

这3个参数均为取每周第一天,区别如下:

ww,按每年的1月1日为第一周第一天,1月8日为第二周第一天……依此类推。

2010-1-1为2010年第一周第一天,取第一周的第一天,仍然为2010-1-1
SQL> select trunc(date'2010-1-1','w') from dual;    
 
TRUNC(DATE'2010-1-1','W')
-------------------------
2010-1-1

2010-1-6为2010年第一周第六天,取第一周的第一天,为2010-1-1
SQL> select trunc(date'2010-1-6','w') from dual;
 
TRUNC(DATE'2010-1-6','W')
-------------------------
2010-1-1

2010-1-9为2010年第二周第二天,取这一周的第一天,为2010-1-8
SQL> select trunc(date'2010-1-9','w') from dual;
 
TRUNC(DATE'2010-1-9','W')
-------------------------
2010-1-8

w与ww功能类似,不过它是按每月的1日为每周第一天,例如1日为当月第一周第一天,8日为第二周第一天……依此类推。
那也就是说,1月份的参数w与ww用trunc函数的结果应该是一致的。

2010-3-1为当月第一周第一天,因此结果为2010-3-1
SQL> select trunc(date'2010-3-1','w') from dual;
 
TRUNC(DATE'2010-3-1','W')
-------------------------
2010-3-1

 2010-3-8为当月第二周第一天,第二周第一天为2010-3-8
SQL> select trunc(date'2010-3-8','w') from dual;
 
TRUNC(DATE'2010-3-8','W')
-------------------------
2010-3-8
 
 2010-3-9为当月第二周第二天,2010-3-8为第二周第一天
SQL> select trunc(date'2010-3-9','w') from dual;
 
TRUNC(DATE'2010-3-9','W')
-------------------------
2010-3-8

iw,不受月份与年份的影响,直接取日期参数的周一。
SQL> select trunc(date'2010-3-9','iw') from dual;
 
TRUNC(DATE'2010-3-9','IW')
--------------------------
2010-3-8

 
 
参考:

TRUNC(number,num_digits) 
Number 需要截尾取整的数字。 
Num_digits 用于指定取整精度的数字。Num_digits 的默认值为 0。如果Num_digits为正数,则截取小数点后Num_digits位;如果为负数,则先保留整数部分,然后从个位开始向前数,并将遇到的数字都变为0。
TRUNC()函数在截取时不进行四舍五入,直接截取。

针对数字的案例,如:

select trunc(123.458) from dual --123

select trunc(123.458,0) from dual --123

select trunc(123.458,1) from dual --123.4

select trunc(123.458,-1) from dual --120

select trunc(123.458,-4) from dual --0

select trunc(123.458,4) from dual --123.458

select trunc(123) from dual --123

select trunc(123,1) from dual --123

select trunc(123,-1) from dual --120

针对日期的案例,如:

select trunc(sysdate) from dual --2017/6/13  返回当天的日期

select trunc(sysdate,'yyyy') from dual   --2017/1/1  返回当年第一天.

select trunc(sysdate,'mm') from dual  --2017/6/1  返回当月第一天.

select trunc(sysdate,'d') from dual  --2017/6/11 返回当前星期的第一天(以周日为第一天).

select trunc(sysdate,'dd') from dual  --2017/6/13  返回当前年月日

select trunc(sysdate,'hh') from dual  --2017/6/13 13:00:00  返回当前小时

select trunc(sysdate,'mi') from dual  --2017/6/13 13:06:00  返回当前分钟

其他优秀链接推荐:

https://www.2cto.com/database/201302/191827.html
https://www.oschina.net/question/44870_3710

Oracle--计算某一日期为一年中的第几周的更多相关文章

  1. Oracle时间日期计算--计算某一日期为一年中的第几周

    Oracle时间日期计算--计算某一日期为一年中的第几周 select to_char(sysdate-10,'yyyymmdd')||':iw:'||to_char(sysdate-10,'iw') ...

  2. C#获取指定日期为一年中的第几周

    /// <summary> /// 获取指定日期,在为一年中为第几周 /// </summary> /// <param name="dt">指 ...

  3. C#指定日期为一年中的第几周

    /// <summary> /// 获取指定时间在为一年中为第几周 /// </summary> /// <param name="dt">指定 ...

  4. Oracle 计算两个日期间隔的天数、月数和年数

    在Oracle中计算两个日期间隔的天数.月数和年数: 一.天数: 在Oracle中,两个日期直接相减,便可以得到天数: select to_date('08/06/2015','mm/dd/yyyy' ...

  5. oracle计算两个日期的时间差时分秒

    Oracle函数可以实现诸多的功能,下面就介绍使用oracle函数计算时间差的实现方法. 两个Date类型字段:START_DATE,END_DATE,计算这两个日期的时间差(分别以天,小时,分钟,秒 ...

  6. C#计算当前日期为一年中的第几周

    方法一: private   int   WeekOfYear(string   date) { DateTime   curDay   =   Convert.ToDateTime(date); i ...

  7. oracle中计算两个日期的相差天数、月数、年数、小时数、分钟数、秒数等

    oracle如何计算两个日期的相差天数.月数.年数.小时数.分钟数.秒数 1.相差天数(两个日期相减) --Oracle中两个日期相差天数-- select TO_NUMBER(TO_DATE('20 ...

  8. Oracle Sql优化之日期的处理

    1.时,分,秒,年,月,日等日期的常用取值方法 select hiredate, to_number(to_char(hiredate,'hh24')) 时, to_number(to_char(hi ...

  9. Oracle数据库中插入日期型数据(to_date的用法)(转载)

    往Oracle数据库中插入日期型数据(to_date的用法) INSERT  INTO  FLOOR  VALUES  ( to_date ( '2007-12-20 18:31:34' , 'YYY ...

随机推荐

  1. Request failed with status code 500以及自引用循环Self referencing loop detected for property ‘xx‘ with type

    错误Error: Request failed with status code 500 ,调试前端没问题,后端也没问题,还报错"连接超时" 在Network中找到错误Self r ...

  2. spring cache整合redis

    在项目中,我们经常需要将一些常用的数据使用缓存起来,避免频繁的查询数据库造成效率低下.spring 为我们提供了一套基于注解的缓存实现,方便我们实际的开发.我们可以扩展spring的cache接口以达 ...

  3. 算法:Z字型(Zigzag)编排

    问题:给定 n 行和 m 列的二维数组矩阵.如图所示,以 ZIG-ZAG 方式打印此矩阵. 从对称的角度来看,通过反复施加滑行反射可以从简单的图案如线段产生规则的之字形. 主要思想:算法从(0, 0) ...

  4. Codeforces Round #741 (Div. 2)部分题题解

    我果然还是太菜了,就写了两道题....真是水死了.... A The Miracle and the Sleeper 简化题意:给定\(l,r\),求\(a\)%\(b\)的最大值,其中\(r> ...

  5. OpenEuler树莓派基础实验

    OpenEuler树莓派基础实验 1.任务详情 1. 参考https://www.cnblogs.com/rocedu/p/14615565.html 完成OpenEuler的安装,提交过程博客和截图 ...

  6. idea连接数据库时区错误

    错误界面 IDEA连接mysql,地址,用户名,密码,数据库名,全都配置好了,点测试连接,咔!不成功! 界面是这样的, 翻译过来就是:服务器返回无效时区.进入"高级"选项卡,手动设 ...

  7. PTA二叉搜索树的操作集 (30分)

    PTA二叉搜索树的操作集 (30分) 本题要求实现给定二叉搜索树的5种常用操作. 函数接口定义: BinTree Insert( BinTree BST, ElementType X ); BinTr ...

  8. 【Django】Mac 安装pip3-install-mysqlclient 报错

    1.首先在pip3-install-mysqlclient时报错 mysql_config not found 2.逛了一些博客 让安装mysql或者mysql-connector-c 我安装了后者还 ...

  9. Nginx面试题(总结最全面的面试题!!!)

    https://blog.csdn.net/weixin_43122090/article/details/105461971

  10. 程序员PS技能(四):程序员创建PSD文件、展示简单PSD设计流程,上传PSD至蓝湖,并下载Demo切图

    前言   本篇是程序员仿照ui设计创建psd且切图五个按钮效果上传至蓝湖,本篇篇幅较长,整体完成一个目标,没有分篇幅了.   前提条件   已经安装了PS,已经在PS上安装了蓝湖插件,并且曾经已经上传 ...