oracle SQL 星期 算法
来源:互联网 发布:springmvc4 json配置 编辑:程序博客网 时间:2024/05/29 03:27
美国人把周日当成一周的开始周六当成周结束,而我们常常需要将周一当成一周的开始,周日当成一周结束。在SQL操作中可能会遇到这类计算,例如,统计上周一到上周日的订单数量。
计算方法如下:
方法:
充分利用trunc函数和next_day函数:
next_day(date,'day') :给出日期date和星期x(周日 x=1 周一 x=2 周二 x=3 ...周六=7)之后计算下一个星期的日期。
trunc 按照指定的精度进行舍入,注意这个函数是直接截断,和round函数有区别
例子:
select round(55.5),round(-55.4),trunc(55.5),trunc(-55.5) from dual;
ROUND(55.5) ROUND(-55.4) TRUNC(55.5) TRUNC(-55.5)
----------- ------------ ----------- ------------
56 -55 55 -55
计算方法:
本周:
周一:trunc(next_day(sysdate - 8, 1) + 1)
周二:trunc(next_day(sysdate - 8, 1) + 2)
周三:trunc(next_day(sysdate - 8, 1) + 3)
周四:trunc(next_day(sysdate - 8, 1) + 4)
周五:trunc(next_day(sysdate - 8, 1) + 5)
周六:trunc(next_day(sysdate - 8, 1) + 6)
周日:trunc(next_day(sysdate - 8, 1) + 7)
可以看出,要计算某周周一的起始日期,那么就直接使用周一到周日中任何一天的日期date替换这里的sysdate即可计算出日期所在周一和周日。
应用 :
统计上周成功订单总数:
- select count(*) from orders o where o.gmt_create>=trunc(next_day(sysdate - 8, 1)-6)
- and o.gmt_create<trunc(next_day(sysdate - 8, 1)+1)
- and o.status=5
补充:JAVA中得到本周一,本周日的方法如下:
- Calendar c = Calendar.getInstance();
- c.setFirstDayOfWeek(Calendar.MONDAY);// 指定周一为一周第一天
- c.setTime(new Date());
- c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);// 本周周一的时间
- c.set(Calendar.HOUR_OF_DAY, 0);
- c.set(Calendar.MINUTE, 0);
- c.set(Calendar.SECOND, 0);
- Date monday = c.getTime();// 当前周一的日期
bugfix: 之前求周一是trunc(next_day(sysdate - 7, 1) + 1) 这个方法无法避免周日这一天计算错误(周日临界问题)。因此修改为
trunc(next_day(sysdate - 8, 1) + 1) ,这样就可以按照中国人的习惯 周一~周日 都算 本周。
- oracle SQL 星期 算法
- 星期算法
- Oracle 获取星期几
- sql 计算星期几
- sql计算星期几
- sql获取时间星期
- 星期的算法
- 星期几的算法
- 星期推算法
- Java星期复选算法
- Oracle PL/SQL之NEXT_DAY - 取得下一个星期几所在的日期
- ORACLE使用一条SQL语句搞定星期月历 软件报20071217N51P16
- oracle date类型显示星期
- oracle日期转星期几
- sql server 标识星期数
- sql查询一个星期以内
- VBScript纯数学星期算法。
- 某天是星期几的算法
- Reset Layout in VB6
- Java获取请求客户端的真实IP地址
- 转载孟岩为《代码之美》写的序言中的两段话
- postgres数据备份及恢复终结版
- 连接ACCESS数据库
- oracle SQL 星期 算法
- jMock Cookbook 中文版三
- PHP面试题(供参考)
- 一个简单的java网络爬虫(spider)
- 求各路C高手帮忙
- JAVA中关于集合类的排序
- 一个程序员应该怎样去学习和掌握计算机英语
- 50种方法巧妙优化你的SQL Server数据库
- 用POI写入Excel