解决oracle 与 php 周算法不同


今天遇到了个小问题,项目要求在数据库里查出某一天上一周的数据列,sql语句还好写;

to_char("date",'ww') >:date

运行,测试。起初还好,几轮测试下来出问题了,总是有那么几天不正确,就是说手算是40周,这是查询时却不是,有可能是41,所以我查了下手册,原来php中给日期格式化是这样的

date("W")//当天是当年的第几周,注:每周是从星期一开始

但是在oracle周的解释是每周是从一月一日算起,所以显而易见会有些问题,所以为了解决我们就最好使他们保持一致,所以我写了下面的算法,跟大家分享下

function get_week_index($month=null, $day=null, $year=null){
        //拿到某一天的月日年
        $month =$month?$month: date("m");
        $day =$day?$day:date("d"); 
        $year  =$year?$year: date("Y");
        //得到那一天的时间戳
        $getDay = mktime(0, 0, 0, $month, $day, $year);
        //得到差值
        $dayMin =$getDay- mktime(0, 0, 0, 1, 1, $year);
        //换算出是第几周
        $dayR =(int) ($dayMin / (7*24*3600)); 
        return ++$dayR;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值