Chinaunix首页 | 论坛 | 博客
  • 博客访问: 723558
  • 博文数量: 94
  • 博客积分: 1937
  • 博客等级: 上尉
  • 技术积分: 1618
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-04 18:46
个人简介

专注数据库开发管理

文章分类

全部博文(94)

文章存档

2015年(1)

2014年(2)

2013年(19)

2012年(32)

2011年(10)

2010年(30)

分类: Oracle

2013-05-08 14:40:28

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

阅读(9822) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~