1. --本周
  2. select TO_CHAR(CREATE_DATE ,'yyyy-MM-dd')as NEW_DATE ,
  3. TO_CHAR(trunc(CREATE_DATE, 'd')+ 1,'yyyy-MM-dd') as START_DATE ,
  4. TO_CHAR(trunc(CREATE_DATE, 'd')+ 7,'yyyy-MM-dd') as END_DATE
  5. from BG_PROJECT_INFO;
  6. --本月
  7. select TO_CHAR(CREATE_DATE ,'yyyy-MM-dd')as NEW_DATE ,
  8. TO_CHAR(trunc(CREATE_DATE, 'mm'),'yyyy-MM-dd') as START_DATE ,
  9. TO_CHAR(last_day(trunc(CREATE_DATE, 'mm')),'yyyy-MM-dd') as END_DATE
  10. from BG_PROJECT_INFO;
  11. --本季
  12. select TO_CHAR(CREATE_DATE ,'yyyy-MM-dd')as NEW_DATE ,
  13. TO_CHAR(trunc(CREATE_DATE, 'Q'),'yyyy-MM-dd') as START_DATE ,
  14. TO_CHAR(add_months(trunc(CREATE_DATE, 'Q'),3)-1,'yyyy-MM-dd') as END_DATE
  15. from BG_PROJECT_INFO;
  16. --本年
  17. select TO_CHAR(CREATE_DATE ,'yyyy-MM-dd')as NEW_DATE ,
  18. TO_CHAR(trunc(CREATE_DATE, 'yyyy'),'yyyy-MM-dd') as START_DATE ,
  19. TO_CHAR(add_months(trunc(CREATE_DATE, 'yyyy'),12)-1,'yyyy-MM-dd') as END_DATE
  20. from BG_PROJECT_INFO;
  21. select to_char(t.CREATE_DATE, 'YYYY-MM-DD') as 天, t.PLAN_HOURS
  22. from BG_PROJECT_INFO t
  23. ---按天统计
  24. select to_char(t.CREATE_DATE+15/24, 'YYYY-MM-DD') as ,sum(t.PLAN_HOURS) as 数量
  25. from BG_PROJECT_INFO t
  26. WHERE
  27. 1=1
  28. group by to_char(t.CREATE_DATE+15/24, 'YYYY-MM-DD')
  29. ORDER by NULLS LAST;
  30. --按周统计
  31. select to_char(next_day(t.CREATE_DATE+15/24 - 7,2),'YYYY-MM-DD') AS 周,sum(t.PLAN_HOURS) as 数量
  32. from BG_PROJECT_INFO t
  33. WHERE
  34. 1=1
  35. group by to_char(next_day(t.CREATE_DATE+15/24 - 7,2),'YYYY-MM-DD')
  36. ORDER BY 周;
  37. --按月统计
  38. select to_char(t.CREATE_DATE,'YYYY-MM') as 月份,sum(t.PLAN_HOURS) as 数量
  39. from BG_PROJECT_INFO t
  40. WHERE
  41. 1=1
  42. GROUP BY
  43. to_char(t.CREATE_DATE,'YYYY-MM')
  44. ORDER BY 月份;
  45. -- 按季统计
  46. select to_char(t.CREATE_DATE,'q') 季度,sum(t.PLAN_HOURS) as 数量
  47. from BG_PROJECT_INFO t
  48. WHERE
  49. 1=1
  50. group by to_char(t.CREATE_DATE,'q')
  51. ORDER BY 季度 NULLS LAST;
  52. --按年统计
  53. select to_char(t.CREATE_DATE,'yyyy') AS 年度,sum(t.PLAN_HOURS) as 数量
  54. from BG_PROJECT_INFO t
  55. WHERE
  56. 1=1
  57. group by to_char(t.CREATE_DATE,'yyyy')
  58. ORDER BY 年度;
  59. --按照周一到周日为一周算周的开始时间和结束时间(IW)自然周
  60. WITH PARAMS AS (SELECT TRUNC(TO_DATE('2009-01-01','YYYY-MM-DD'),'YYYY') AS SD FROM DUAL)
  61. SELECT LEVEL 周次,
  62. DECODE(SIGN(5-DECODE(TO_CHAR(PM.SD,'D'),'','',TO_CHAR(PM.SD,'D'))),-1,
  63. NEXT_DAY(PM.SD+(LEVEL-1)*7,2),NEXT_DAY(PM.SD+(LEVEL-1)*7-7,2))
  64. 当周第一天,
  65. DECODE(SIGN(5-DECODE(TO_CHAR(PM.SD,'D'),'','',TO_CHAR(PM.SD,'D'))),-1,
  66. NEXT_DAY(PM.SD+(LEVEL-1)*7,2),NEXT_DAY(PM.SD+(LEVEL-1)*7-7,2)) + 6
  67. 当周最后一天
  68. FROM DUAL D
  69. LEFT JOIN PARAMS PM ON 1=1
  70. CONNECT BY LEVEL<=53
  71. --按照周日到周六为一周算周的开始时间和结束时间(D
  72. SELECT LEVEL 周次,(TRUNC(TO_DATE('2011-01-01','YYYY-MM-DD'),'YYYY')-7) + (7-TO_CHAR(TRUNC(TO_DATE('2011-01-01','YYYY-MM-DD'),'YYYY'),'D')+1)+(LEVEL-1)*7 当周第一天,
  73. (TRUNC(TO_DATE('2011-01-01','YYYY-MM-DD'),'YYYY')-7) + (7-TO_CHAR(TRUNC(TO_DATE('2011-01-01','YYYY-MM-DD'),'YYYY'),'D')+1)+(LEVEL-1)*7+6 当周最后一天
  74. FROM DUAL CONNECT BY LEVEL<=53
  75. --按照ORACLE标准(WW
  76. SELECT LEVEL 周次,TO_DATE('2013-01-01','YYYY-MM-DD')+(LEVEL-1)*7 当周第一天,
  77. TO_DATE('2013-01-01','YYYY-MM-DD')+(LEVEL-1)*7+
  78. DECODE((TO_CHAR(TO_DATE('2013-12-31','YYYY-MM-DD'),'DDD')-(LEVEL-1)*7),1,0,2,1,6) 当周最后一天
  79. FROM DUAL CONNECT BY LEVEL<=53
  80. WITH src
  81. AS (SELECT TRUNC (DATE '2018-08-01') fromdate,
  82. TRUNC (DATE '2019-09-01') todate
  83. FROM DUAL),
  84. dataset
  85. AS ( SELECT LEVEL AS seq
  86. FROM DUAL
  87. CONNECT BY LEVEL < (SELECT todate - fromdate FROM src)),
  88. datawithindices
  89. AS (SELECT src.*,
  90. dataset.*,
  91. CASE TO_CHAR (fromdate + seq - 1, 'DY')
  92. WHEN 'SAT' THEN 1
  93. WHEN 'SUN' THEN 2
  94. WHEN 'MON' THEN 3
  95. WHEN 'TUE' THEN 4
  96. WHEN 'WED' THEN 5
  97. WHEN 'THU' THEN 6
  98. WHEN 'FRI' THEN 7
  99. END
  100. indice
  101. FROM src, dataset),
  102. filt
  103. AS (SELECT seq, fromdate + seq - 1 nowaday, indice FROM datawithindices),
  104. alldata
  105. AS (SELECT filt.*, CEIL (indice / 7) + FLOOR (seq / 7) weekno FROM filt)
  106. SELECT 'WEEK '||weekno week_seq, begindate, enddate
  107. FROM (SELECT weekno,
  108. FIRST_VALUE (nowaday)
  109. OVER (PARTITION BY weekno ORDER BY weekno)
  110. begindate,
  111. LAST_VALUE (nowaday)
  112. OVER (PARTITION BY weekno ORDER BY weekno)
  113. enddate,
  114. ROW_NUMBER () OVER (PARTITION BY weekno ORDER BY weekno) rn
  115. FROM alldata)
  116. WHERE rn = 1

SQL ----周

  1. -----周
  2. SELECT NUMS ,
  3. (case when TO_DATE(WEEK_START_DATE, 'yyyy-mm-dd') < TO_DATE('2018-08-01', 'yyyy-mm-dd') then '2018-08-01' else WEEK_START_DATE end) as WEEKS_START_DATE ,
  4. (case when TO_DATE(WEEK_END_DATE, 'yyyy-mm-dd') > TO_DATE('2018-09-15', 'yyyy-mm-dd') then '2018-09-15' else WEEK_END_DATE end) as WEEK_END_DATE
  5.  
  6. from (
  7. SELECT ROWNUM as NUMS,WEEK_START_DATE,WEEK_END_DATE from(
  8. select WEEK_START_DATE, WEEK_END_DATE from (
  9. select
  10. ROWNUM as NUM,
  11. to_char(日期,'yyyy-mm-dd') DATE_ID,
  12. to_char(日期,'yyyy') YEAR_ID,
  13. to_char(日期,'q') QUARTERID_ID,
  14. to_char(日期,'mm') MONTH_ID,
  15. TO_CHAR(trunc(日期, 'd')+ ,'yyyy-MM-dd') as WEEK_START_DATE ,
  16. TO_CHAR(trunc(日期, 'd')+ ,'yyyy-MM-dd') as WEEK_END_DATE,
  17. TO_CHAR(trunc(日期, 'mm'),'yyyy-MM-dd') as MONTH_START_DATE ,
  18. TO_CHAR(last_day(trunc(日期, 'mm')),'yyyy-MM-dd') as MONTH_END_DATE,
  19. TO_CHAR(trunc(日期, 'Q'),'yyyy-MM-dd') as QUARTERID_START_DATE ,
  20. TO_CHAR(add_months(trunc(日期, 'Q'),)-,'yyyy-MM-dd') as QUARTERID_END_DATE,
  21. TO_CHAR(trunc(日期, 'yyyy'),'yyyy-MM-dd') as YEAR_START_DATE ,
  22. TO_CHAR(add_months(trunc(日期, 'yyyy'),)-,'yyyy-MM-dd') as YEAR_END_DATE
  23. from(
  24. select to_date('2018-08-01','yyyy-mm-dd')+(rownum-) 日期
  25. from ALL_OBJECTS
  26. where rownum< and to_date('2018-08-01','yyyy-mm-dd')+(rownum-)<=to_date('2018-09-15','yyyy-mm-dd')
  27. )
  28. ) WHERE
  29. =
  30. GROUP BY WEEK_START_DATE,WEEK_END_DATE
  31. ORDER BY WEEK_START_DATE
  32. )
  33. )

SQL ----月

  1. -----月
  2. SELECT NUMS ,
  3. (case when TO_DATE(MONTH_START_DATE, 'yyyy-mm-dd') < TO_DATE('2018-08-01', 'yyyy-mm-dd') then '2018-08-01' else MONTH_START_DATE end) as MONTH_START_DATE ,
  4. (case when TO_DATE(MONTH_END_DATE, 'yyyy-mm-dd') > TO_DATE('2018-09-15', 'yyyy-mm-dd') then '2018-09-15' else MONTH_END_DATE end) as MONTH_END_DATE
  5.  
  6. from (
  7. SELECT ROWNUM as NUMS,MONTH_START_DATE,MONTH_END_DATE from(
  8. select MONTH_START_DATE, MONTH_END_DATE from (
  9. select
  10. ROWNUM as NUM,
  11. to_char(日期,'yyyy-mm-dd') DATE_ID,
  12. to_char(日期,'yyyy') YEAR_ID,
  13. to_char(日期,'q') QUARTERID_ID,
  14. to_char(日期,'mm') MONTH_ID,
  15. TO_CHAR(trunc(日期, 'd')+ ,'yyyy-MM-dd') as WEEK_START_DATE ,
  16. TO_CHAR(trunc(日期, 'd')+ ,'yyyy-MM-dd') as WEEK_END_DATE,
  17. TO_CHAR(trunc(日期, 'mm'),'yyyy-MM-dd') as MONTH_START_DATE ,
  18. TO_CHAR(last_day(trunc(日期, 'mm')),'yyyy-MM-dd') as MONTH_END_DATE,
  19. TO_CHAR(trunc(日期, 'Q'),'yyyy-MM-dd') as QUARTERID_START_DATE ,
  20. TO_CHAR(add_months(trunc(日期, 'Q'),)-,'yyyy-MM-dd') as QUARTERID_END_DATE,
  21. TO_CHAR(trunc(日期, 'yyyy'),'yyyy-MM-dd') as YEAR_START_DATE ,
  22. TO_CHAR(add_months(trunc(日期, 'yyyy'),)-,'yyyy-MM-dd') as YEAR_END_DATE
  23. from(
  24. select to_date('2018-08-01','yyyy-mm-dd')+(rownum-) 日期
  25. from ALL_OBJECTS
  26. where rownum< and to_date('2018-08-01','yyyy-mm-dd')+(rownum-)<=to_date('2018-09-15','yyyy-mm-dd')
  27. )
  28. ) WHERE
  29. =
  30. GROUP BY MONTH_START_DATE,MONTH_END_DATE
  31. ORDER BY MONTH_START_DATE
  32. )
  33. )

SQL ----季节

  1. SELECT NUMS ,
  2. (case when TO_DATE(QUARTERID_START_DATE, 'yyyy-mm-dd') < TO_DATE('2018-08-01', 'yyyy-mm-dd') then '2018-08-01' else QUARTERID_START_DATE end) as QUARTERID_START_DATE ,
  3. (case when TO_DATE(QUARTERID_END_DATE, 'yyyy-mm-dd') > TO_DATE('2019-09-15', 'yyyy-mm-dd') then '2019-09-15' else QUARTERID_END_DATE end) as QUARTERID_END_DATE
  4.  
  5. from (
  6. SELECT ROWNUM as NUMS,QUARTERID_START_DATE,QUARTERID_END_DATE from(
  7. select QUARTERID_START_DATE, QUARTERID_END_DATE from (
  8. select
  9. ROWNUM as NUM,
  10. to_char(日期,'yyyy-mm-dd') DATE_ID,
  11. to_char(日期,'yyyy') YEAR_ID,
  12. to_char(日期,'q') QUARTERID_ID,
  13. to_char(日期,'mm') MONTH_ID,
  14. TO_CHAR(trunc(日期, 'd')+ ,'yyyy-MM-dd') as WEEK_START_DATE ,
  15. TO_CHAR(trunc(日期, 'd')+ ,'yyyy-MM-dd') as WEEK_END_DATE,
  16. TO_CHAR(trunc(日期, 'mm'),'yyyy-MM-dd') as MONTH_START_DATE ,
  17. TO_CHAR(last_day(trunc(日期, 'mm')),'yyyy-MM-dd') as MONTH_END_DATE,
  18. TO_CHAR(trunc(日期, 'Q'),'yyyy-MM-dd') as QUARTERID_START_DATE ,
  19. TO_CHAR(add_months(trunc(日期, 'Q'),)-,'yyyy-MM-dd') as QUARTERID_END_DATE,
  20. TO_CHAR(trunc(日期, 'yyyy'),'yyyy-MM-dd') as YEAR_START_DATE ,
  21. TO_CHAR(add_months(trunc(日期, 'yyyy'),)-,'yyyy-MM-dd') as YEAR_END_DATE
  22. from(
  23. select to_date('2018-08-01','yyyy-mm-dd')+(rownum-) 日期
  24. from ALL_OBJECTS
  25. where rownum< and to_date('2018-08-01','yyyy-mm-dd')+(rownum-)<=to_date('2019-09-15','yyyy-mm-dd')
  26. )
  27. ) WHERE
  28. =
  29. GROUP BY QUARTERID_START_DATE,QUARTERID_END_DATE
  30. ORDER BY QUARTERID_START_DATE
  31. )
  32. )

SQL ----年

  1. -----年
  2. SELECT NUMS ,
  3. (case when TO_DATE(YEAR_START_DATE, 'yyyy-mm-dd') < TO_DATE('2018-08-01', 'yyyy-mm-dd') then '2018-08-01' else YEAR_START_DATE end) as YEAR_START_DATE ,
  4. (case when TO_DATE(YEAR_END_DATE, 'yyyy-mm-dd') > TO_DATE('2019-09-15', 'yyyy-mm-dd') then '2019-09-15' else YEAR_END_DATE end) as YEAR_END_DATE
  5.  
  6. from (
  7. SELECT ROWNUM as NUMS,YEAR_START_DATE,YEAR_END_DATE from(
  8. select YEAR_START_DATE, YEAR_END_DATE from (
  9. select
  10. ROWNUM as NUM,
  11. to_char(日期,'yyyy-mm-dd') DATE_ID,
  12. to_char(日期,'yyyy') YEAR_ID,
  13. to_char(日期,'q') QUARTERID_ID,
  14. to_char(日期,'mm') MONTH_ID,
  15. TO_CHAR(trunc(日期, 'd')+ ,'yyyy-MM-dd') as WEEK_START_DATE ,
  16. TO_CHAR(trunc(日期, 'd')+ ,'yyyy-MM-dd') as WEEK_END_DATE,
  17. TO_CHAR(trunc(日期, 'mm'),'yyyy-MM-dd') as MONTH_START_DATE ,
  18. TO_CHAR(last_day(trunc(日期, 'mm')),'yyyy-MM-dd') as MONTH_END_DATE,
  19. TO_CHAR(trunc(日期, 'Q'),'yyyy-MM-dd') as QUARTERID_START_DATE ,
  20. TO_CHAR(add_months(trunc(日期, 'Q'),)-,'yyyy-MM-dd') as QUARTERID_END_DATE,
  21. TO_CHAR(trunc(日期, 'yyyy'),'yyyy-MM-dd') as YEAR_START_DATE ,
  22. TO_CHAR(add_months(trunc(日期, 'yyyy'),)-,'yyyy-MM-dd') as YEAR_END_DATE
  23. from(
  24. select to_date('2018-08-01','yyyy-mm-dd')+(rownum-) 日期
  25. from ALL_OBJECTS
  26. where rownum< and to_date('2018-08-01','yyyy-mm-dd')+(rownum-)<=to_date('2019-09-15','yyyy-mm-dd')
  27. )
  28. ) WHERE
  29. =
  30. GROUP BY YEAR_START_DATE,YEAR_END_DATE
  31. ORDER BY YEAR_START_DATE
  32. )
  33. )

sql把一段时间分割成周,月,季度,年的时间段的更多相关文章

  1. PL/SQL Developer 一段时间后变慢,且导致数据库CPU100%的问题(转)

    参考: 一段时间不用plsql developer之后重新使用会变得很慢 plsql developer连接数据库导致服务器cpu升高的案例 1.pl/sql dev 变慢的问题,建议设置如下 2. ...

  2. java把一段时间分成周,月,季度,年的时间段

    package com.mq.test.activeMQ; import java.text.DateFormat; import java.text.ParseException; import j ...

  3. sql 循环某段时间的每一天

    create table #t1( 日期 datetime) declare @stime datetime;declare @etime datetime set @stime ='2015-01- ...

  4. sql 通过某段时间求得改段时间内的工作时长,排除工作日

    CREATE FUNCTION Fun_GetTotalHourBySomeTime(@TaskId NVARCHAR(30),@Bu_trupstartDate NVARCHAR(50),@Bu_t ...

  5. 如何在Sql Server中读取最近一段时间的记录,比如取最近3天的或最近3个月的记录。

    如何在Sql Server中读取最近一段时间的记录,比如取最近3天的或最近3个月的记录. 主要用到DATEADD函数,下面是详细语句 取最近3天 select * from 表名where rq> ...

  6. SQL Server日期和时间的格式

    在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.本文我们主要就介绍一下SQL Server日 ...

  7. ylb:SQL Server中的时间函数

    ylbtech-SQL Server:SQL Server-SQL Server中的时间函数 SQL Server中的时间函数. 1,SQL Server中的时间函数 返回顶部 1.   当前系统日期 ...

  8. js 将一大段时间均分为很多个小时间段

    最近写项目,遇到一个将选中时间段平均分割为若干小段,然后根据小段时间在数据库查询求均值的问题,后台大哥犯懒,非说后台做不了,让我分好传给他ヾ(. ̄□ ̄)ツ゜゜゜好气呦,但还要保持微笑,我就是这么懂礼貌 ...

  9. Sql Server中日期时间格式化为字符串输出

    在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.本文我们主要就介绍一下SQL Server日 ...

随机推荐

  1. 你不知道的css各类布局(四)之响应式布局

    响应式布局 概念 响应式布局指的是同一页面在不同屏幕尺寸下有不同的布局 布局特点 响应式设计的目标是确保一个页面在所有终端上(各种尺寸的PC.手机.手表.冰箱的Web浏览器等等)都能显示出令人满意的效 ...

  2. 记项目管理大作业Web项目Mandrian的全流程[其一] 整体分析: 功能划分, 组织结构

    Mandrian是个图书管理系统, 具体需求老师给出 这个项目的目的主要是管理过程和高层设计的学习和实践 11人小组, 路人局 成员调查 这里由于很多人我都不认识, 所以我提前发了一个能力调查表, 调 ...

  3. Java对象的序列化和反序列化介绍

    一.什么序列化和反序列化以及作用: java序列化是指把java对象转换为字节序列的过程,而java反序列化是指把字节序列恢复为java对象的过程 1.序列化: 1)对象序列化的最主要的用处就是在传递 ...

  4. Tomcat项目自动部署脚本

    一般情况下使用的Linux环境都是加固的,root路径只有超级管理员权限才能进入.我们新建一个自己的用户,在/home下会有一个用户目录,传输war包都放在这个目录下,此时不动webapps文件下的内 ...

  5. qt tableview中如何添加右键菜单且不可编辑单元格

    QTableView是一个比较实用的类,下面教给大家如何在QTableView中添加右键菜单. #include <QMenu>#include <QAction> QTabl ...

  6. ADO.net 数据库连接new SqlConnection、Open、Close、Dispose

    今天踩了一个坑,用了一个static对象,存储了Connection,导致了并发量大时(35/s)出现单个连接的数据库请求堆积,以及并发Open导致的异常,最终使服务下线. 排查中发现有些概念不清的地 ...

  7. beego注解路由的格式

    原文: https://blog.csdn.net/weixin_33743880/article/details/88016192 beego注解路由的注释,我们可以把我们的注释分为以下类别: @T ...

  8. IDEA springboot maven 项目部署

  9. mysql服务启动失败

    #!/bin/bash . /etc/rc.d/init.d/functions MPORT=`netstat -atnlp | grep 3306| wc -l` MPROC=`ps ax | gr ...

  10. 严格次小生成树[BJWC2010]

    原文必点 原题链接 题目描述 给定一张\(N\) 个点$ M $条边的无向图,求无向图的严格次小生成树. 设最小生成树的边权之和为\(sum\),严格次小生成树就是指边权之和大于\(sum\)的生成树 ...