• mysql oracle统计报表每天每月每年SQL


    mysql查询当天、昨天、本周、上周、近7天、近30天、本月、上个月、近6个月、本季度、上季度、本年和去年的数据

    注意
    XML
    < 应该转为 <

    当天
    SELECT * FROM 表名 WHERE TO_DAYS(时间字段名) = TO_DAYS(NOW());

    昨天
    SELECT * FROM 表名 WHERE TO_DAYS(NOW()) - TO_DAYS(时间字段名) <= 1;

    本周
    SELECT * FROM 表名 WHERE YEARWEEK(DATE_FORMAT(时间字段名,'%Y-%m-%d')) = YEARWEEK(NOW());

    上周
    SELECT * FROM 表名 WHERE YEARWEEK(DATE_FORMAT(时间字段名,'%Y-%m-%d')) = YEARWEEK(NOW())-1;

    近7天
    SELECT * FROM 表名 WHERE DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= DATE(时间字段名);

    近30天
    SELECT * FROM 表名 WHERE DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= DATE(时间字段名);

    本月
    SELECT * FROM 表名 WHERE DATE_FORMAT(时间字段名,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m');

    上个月
    SELECT * FROM 表名 WHERE PERIOD_DIFF(DATE_FORMAT(NOW(),'%Y%m'),DATE_FORMAT(时间字段名,'%Y%m')) = 1;

    SELECT * FROM 表名 WHERE DATE_FORMAT(时间字段名,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m') ; 

    SELECT * FROM 表名 WHERE WEEKOFYEAR(FROM_UNIXTIME(时间字段名,'%y-%m-%d')) = WEEKOFYEAR(NOW()); 

    SELECT * FROM 表名 WHERE MONTH(FROM_UNIXTIME(时间字段名,'%y-%m-%d')) = MONTH(NOW()); 

    SELECT * FROM 表名 WHERE YEAR(FROM_UNIXTIME(时间字段名,'%y-%m-%d')) = YEAR(NOW()) AND MONTH(FROM_UNIXTIME(时间字段名,'%y-%m-%d')) = MONTH(NOW());

    近6个月
    SELECT * FROM 表名 WHERE 时间字段名 BETWEEN DATE_SUB(NOW(),INTERVAL 6 MONTH) AND NOW();

    本季度
    SELECT * FROM 表名 WHERE QUARTER(时间字段名) = QUARTER(NOW());

    上季度
    SELECT * FROM 表名 WHERE QUARTER(时间字段名) = QUARTER(DATE_SUB(NOW(),INTERVAL 1 QUARTER));

    本年
    SELECT * FROM 表名 WHERE YEAR(时间字段名)=YEAR(NOW());

    去年
    SELECT * FROM 表名 WHERE YEAR(时间字段名) = YEAR(DATE_SUB(NOW(),INTERVAL 1 YEAR));


    Oracle几个常用的日期计算SQL示例

    1. 1、查询上月的所有日期:
    2. SELECT TO_CHAR (TRUNC (TRUNC (SYSDATE, 'MM') - 1, 'month') + LEVEL - 1,
    3. 'yyyy-MM-dd')
    4. AS month_day
    5. FROM DUAL
    6. CONNECT BY LEVEL <= TO_CHAR (LAST_DAY (TRUNC (SYSDATE, 'MM') - 1), 'dd');
    7. 2、查询当月的所有日期:
    8. SELECT TO_CHAR (TRUNC (SYSDATE, 'month') + LEVEL - 1,
    9. 'yyyy-MM-dd')
    10. AS month_day
    11. FROM DUAL
    12. CONNECT BY LEVEL <= TO_CHAR (LAST_DAY (TRUNC (SYSDATE, 'MM') - 1), 'dd');
    13. 3、查询上月月份:
    14. SELECT TO_CHAR(ADD_MONTHS(SYSDATE,-1),'YYYY-MM') FROM DUAL;
    15. 4、查询当月天数:
    16. SELECT TO_CHAR (LAST_DAY (TRUNC (SYSDATE, 'mm')), 'DD') mounth_count
    17. FROM DUAL;
    18. 5、查询当月第一天:
    19. SELECT TRUNC (SYSDATE, 'month') FROM DUAL;
    20. 6、查询当月最后一天:
    21. SELECT TO_CHAR (LAST_DAY (SYSDATE), 'YYYY-MM-DD') FROM DUAL;
    22. 7、计算两个日期之间天数:
    23. SELECT TO_DATE ('2013-08-05', 'yyyy-MM-dd')
    24. - TO_DATE ('2013-08-01', 'yyyy-MM-dd')
    25. + 1
    26. AS count_day
    27. FROM DUAL;
    28. 8、查询两个日期之间的所有日期:
    29. SELECT ROWNUM, TO_DATE ('2013-01-02', 'yyyy-MM-dd') + ROWNUM - 1 AS allday
    30. FROM DUAL
    31. CONNECT BY ROWNUM <
    32. TO_DATE ('2013-01-07', 'yyyy-MM-dd')
    33. - TO_DATE ('2013-01-02', 'yyyy-MM-dd')
    34. + 2;
  • 相关阅读:
    RAID技术复习笔记
    联系厂家400如何提高问题解决效率
    如何测试微信公众号?
    微服务-Ribbon负载均衡
    城市公交查询系统的设计与实现
    无线传感器网络:传输层
    springboot+高校学生实习档案管理 毕业设计-附源码221508
    山西电力市场日前价格预测【2023-10-15】
    侯捷 - C++ Startup 揭密:C++ 程序的生前和死后 (四)
    Springboot基于Redisson实现Redis分布式可重入锁【案例到源码分析】
  • 原文地址:https://blog.csdn.net/weixin_45623983/article/details/134391470