Oracle--计算某一日期为一年中的第几周
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
总结:
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--计算某一日期为一年中的第几周的更多相关文章
- Oracle时间日期计算--计算某一日期为一年中的第几周
Oracle时间日期计算--计算某一日期为一年中的第几周 select to_char(sysdate-10,'yyyymmdd')||':iw:'||to_char(sysdate-10,'iw') ...
- C#获取指定日期为一年中的第几周
/// <summary> /// 获取指定日期,在为一年中为第几周 /// </summary> /// <param name="dt">指 ...
- C#指定日期为一年中的第几周
/// <summary> /// 获取指定时间在为一年中为第几周 /// </summary> /// <param name="dt">指定 ...
- Oracle 计算两个日期间隔的天数、月数和年数
在Oracle中计算两个日期间隔的天数.月数和年数: 一.天数: 在Oracle中,两个日期直接相减,便可以得到天数: select to_date('08/06/2015','mm/dd/yyyy' ...
- oracle计算两个日期的时间差时分秒
Oracle函数可以实现诸多的功能,下面就介绍使用oracle函数计算时间差的实现方法. 两个Date类型字段:START_DATE,END_DATE,计算这两个日期的时间差(分别以天,小时,分钟,秒 ...
- C#计算当前日期为一年中的第几周
方法一: private int WeekOfYear(string date) { DateTime curDay = Convert.ToDateTime(date); i ...
- oracle中计算两个日期的相差天数、月数、年数、小时数、分钟数、秒数等
oracle如何计算两个日期的相差天数.月数.年数.小时数.分钟数.秒数 1.相差天数(两个日期相减) --Oracle中两个日期相差天数-- select TO_NUMBER(TO_DATE('20 ...
- Oracle Sql优化之日期的处理
1.时,分,秒,年,月,日等日期的常用取值方法 select hiredate, to_number(to_char(hiredate,'hh24')) 时, to_number(to_char(hi ...
- Oracle数据库中插入日期型数据(to_date的用法)(转载)
往Oracle数据库中插入日期型数据(to_date的用法) INSERT INTO FLOOR VALUES ( to_date ( '2007-12-20 18:31:34' , 'YYY ...
随机推荐
- 【二食堂】Alpha - Scrum Meeting 3
Scrum Meeting 3 例会时间:4.13 12:00 - 12:30 进度情况 组员 昨日进度 今日任务 李健 1. 继续学习前端知识,寻找一些可用的框架.issue 1. 搭建主页html ...
- 算法:Z字型(Zigzag)编排
问题:给定 n 行和 m 列的二维数组矩阵.如图所示,以 ZIG-ZAG 方式打印此矩阵. 从对称的角度来看,通过反复施加滑行反射可以从简单的图案如线段产生规则的之字形. 主要思想:算法从(0, 0) ...
- shell调用另一个脚本的三种方式fork/exec/source
exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. bash shell的命令分为两 ...
- P2472 [SCOI2007]蜥蜴(最大流)
P2472 [SCOI2007]蜥蜴 自己第一道独立做题且一遍AC的网络流题纪念... 看到这道题我就想到网络流建图的方式了... 首先根据每个高度,我们将每个点拆成两个点限流.之后根据跳的最大距离, ...
- Luogu P2827 [NOIp2016提高组]蚯蚓 | 神奇的队列
题目链接 80分思路: 弄一个优先队列,不停地模拟,切蚯蚓时就将最长的那一条出队,然后一分为二入队,简单模拟即可.还要弄一个标记,表示从开始到当前时间每一条蚯蚓应该加上的长度,操作时就加上,入队时就减 ...
- hdu 5056 Boring count (类似单调队列的做法。。)
给一个由小写字母构成的字符串S,问有多少个子串满足:在这个子串中每个字母的个数都不超过K. 数据范围: 1<=T<= 1001 <= the length of S <= 10 ...
- Shadertoy 教程 Part 4 - 绘制多个2D图形和混入
Note: This series blog was translated from Nathan Vaughn's Shaders Language Tutorial and has been au ...
- OpenEuler树莓派基础实验
OpenEuler树莓派基础实验 1.任务详情 1. 参考https://www.cnblogs.com/rocedu/p/14615565.html 完成OpenEuler的安装,提交过程博客和截图 ...
- python与C结构体之间二进制数据转换
python与C结构体之间数据转换 前言 在实际应用中,可能会遇到直接和C进行二进制字节流协议通信,这时要把数据解包成python数据,如果可能,最好与C定义的结构体完全对应上. python中有2种 ...
- 2021CISCN 华南赛区WEB wp
CISCN 华南区域赛 太菜了 我躺平了 easy_seri <?php error_reporting(0); highlight_file(__FILE__); class Test{ pu ...