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  返回当前分钟

标签:第一天,几周,DATE,某一,dual,Oracle,2010,select,trunc

来源: https://www.cnblogs.com/Formulate0303/p/11880846.html

oracle查询一年的第几周,Oracle--计算某一日期为一年中的第几周相关推荐

  1. SQL server 计算当前日期为一年中的第几周,以周五/周一作为一周中的第一天

    这个问题对于小白的我来说,当时找了好久才解决,所以在这里记录一下. 要计算当前日期为一年中的第几周,以周五作为一周中的第一天 首先设置每周的起始天为周五(因为默认是从周天开始的) SET DATEFI ...

  2. oracle查询一张表的主键,Oracle查询表主键、外键

    Oracle查询表主键.外键 1. 查找表的所有索引(包括索引名,类型,构成列) select t.*,i.index_type from user_ind_columns t,user_indexe ...

  3. oracle查询大小写敏感参数,【学习笔记】Oracle 11G密码大小写敏感的设置方法 sec_case_sensitive_logon参数...

    天萃荷净 分享一篇Oracle数据库密码大小写敏感设置案例,从11.1开始密码大小写敏感了,同时可以设置sec_case_sensitive_logon参数可以忽略大小写敏感(USER$.SPARE4 ...

  4. php 获取两个日期相隔几周,怎么样计算2个日期之间相差几周

    你的位置: 问答吧 -> PHP基础 -> 问题详情 怎么样计算2个日期之间相差几周 如题 如果2个日期在同一年中的话可以通过date("W",unix时间戳)来计算 ...

  5. oracle查询保留小数点后三位,关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其他位数)...

    方法一:使用to_char的fm格式,即: to_char(round(data.amount,2),'FM9999999999999999.00') as amount 不足之处是,如果数值是0的话 ...

  6. oracle查询员工员工部门领导领导部门,oracle多表查询之经典面试题

    一.笛卡尔积 概念 笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成 ...

  7. oracle查询控制文件的位置及其文件名,oracle的控制文件(control file)

    控制文件是一个小小的二进制文件,是oracle数据库的一部分,这个控制文件是用于记录数据库的状态和物理结构. 每个数据库必须要至少一个控制文件,但是强烈的建议超过一个控制文件,每个控制文件的备份应该放 ...

  8. oracle查询多表连接语句怎么写,Oracle join多表查询

    join(连接)是一个查询,它将来自两个或多个表.视图的数据组合在一起. 我通过一些示例来向大家介绍join的常用方法. 一.生成测试数据 1.创建超女基本信息历史表(T_GIRL_HIS)creat ...

  9. oracle 查询调用某一存储过程的job,oracle job 调用存储过程的使用

    -- job begin sys.dbms_scheduler.create_job(job_name => 'SSS.P_TRMS_CAR_TASK_JOB', job_type => ...

  10. java中获取某个Date为一年中的第多少周

    @RequestMapping("/format") public Integer getFormatData(@RequestParam String dateString) t ...

最新文章

  1. nacos如何做配置中心?自带自动刷新配置功能?这一篇文章让你明明白白!
  2. Dev-C++ 5.11安装教程
  3. Java黑皮书课后题第10章:10.2(BMI类)将下面的新构造方法加入BMI类中
  4. 【Qt】2D绘图之绘制图片
  5. c语言数组中两元素交换,如可交换两个数组中的元素?
  6. Unity 2017 Game Optimization 读书笔记 Dynamic Graphics(1)
  7. 前端学习(2765):如何传递事件和参数
  8. Maven高级之插件开发
  9. inputstream是否一定要close_新车是否需要底盘保养?一定要喷底盘防锈漆吗?
  10. [转载] python 字符串包含某个字符_python字符串
  11. linux删除进程文件,Linux如何查找或删除正在使用某文件的进程
  12. 【肌电信号】基于matlab带通滤波肌电信号处理【含Matlab源码 965期】
  13. 有限元计算计算机配置, 有限元分析计算对电脑配置都有什么要求
  14. 记一次接口压力测试与性能调优
  15. 基于Web的教学网站前端开发设计 报告+任务书+html源码
  16. 解决-redis保存的中文变为unicode, redis的基本操作
  17. EXCEL折线图修改横坐标间隔
  18. 灵感分享|10个优秀网站设计实例赏析及原型分享
  19. 关于python语言数值操作符_下列哪种物质是体内硫酸基的提供者
  20. Spring学记笔记

热门文章

  1. 双核心星形结构IP城域网的路由规划与配置实践
  2. Emlog二次元acg博客主题模板—Grace
  3. centos6.2安装office及PDF阅读器
  4. java 自己实现工作流_Java基于jeeplus vue实现简单工作流过程图解
  5. centos linux远程桌面连接工具,VNC Viewer轻松连接远程CentOS6.8桌面
  6. UE4.27 Live Link Face无法连接的一种解决办法
  7. 计算机审计取证方法,审计技术方法有几种
  8. 屏幕录像专家android,屏幕录像专家
  9. 特征工程之特征选择——来自小白的进阶之路(二)
  10. JDK1.8后List转Map