Oracle trunc()函数的用法

/**************日期********************/
select trunc(sysdate) from dual --2013-01-06 今天的日期为2013-01-06
select trunc(sysdate, 'mm') from dual --2013-01-01 返回当月第一天.
select trunc(sysdate,'yy') from dual --2013-01-01 返回当年第一天
select trunc(sysdate,'dd') from dual --2013-01-06 返回当前年月日
select trunc(sysdate,'yyyy') from dual --2013-01-01 返回当年第一天
select trunc(sysdate,'d') from dual --2013-01-06 (星期天)返回当前星期的第一天
select trunc(sysdate, 'hh') from dual --2013-01-06 17:00:00 当前时间为17:35
select trunc(sysdate, 'mi') from dual --2013-01-06 17:35:00 TRUNC()函数没有秒的精确
/***************数字********************/

/*
TRUNC(number,num_digits)
Number 需要截尾取整的数字。
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

<1>、ww的算法为每年1月1日为第一周开始,date+6为每一周结尾

   例如20050101为第一周的第一天,而第一周的最后一天为20050101+6=20050107

   公式 每周第一天 :date + 周 * 7 - 7

   每周最后一天:date + 周 * 7 - 1

<2>、iw算法为自然周,即星期一到星期日为一周。且每年的第一个星期天为第一周,这样就会把去年的最后几天当成今年的第一周日期

select to_char(date'2015-1-1', 'yyyyww')  from dual;
-- 201501
select to_char(date'2015-1-1', 'yyyyiw')  from dual;
-- 201501
select to_char(date'2015-1-5', 'yyyyww')  from dual;
201501
select to_char(date'2015-1-5', 'yyyyiw')  from dual;
201502
select to_char(date'2014-12-31', 'yyyyww')  from dual;
201453
select to_char(date'2014-12-31', 'yyyyiw')  from dual;
201401 特别注意这里,如果做统计,很容易和真正的201401周数据合并了,其实应该是201501周
select to_char(date'2014-12-28', 'yyyyww')  from dual;
201452
select to_char(date'2014-12-28', 'yyyyiw')  from dual;
201452

推荐使用

trunc(date'','iw')
获取每个日期的周一,通过周一日期来排序统计,这样解决跨年的自然周问题
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值