当前位置:   article > 正文

MySQL查询当月日期列表(月初至当天、当月整个月)_mysql 当月

mysql 当月

一、查询第一天到当月的日期列表

首先,可以在视图部分创建一个的视图,关于月初至当天的日期列表

 代码如下

  1. SELECT
  2. ADDDATE( tab2.firstDay, tab1.firstDay - 1 ) AS date
  3. FROM
  4. (
  5. SELECT
  6. 1 AS firstDay UNION ALL
  7. SELECT
  8. 2 UNION ALL
  9. SELECT
  10. 3 UNION ALL
  11. SELECT
  12. 4 UNION ALL
  13. SELECT
  14. 5 UNION ALL
  15. SELECT
  16. 6 UNION ALL
  17. SELECT
  18. 7 UNION ALL
  19. SELECT
  20. 8 UNION ALL
  21. SELECT
  22. 9 UNION ALL
  23. SELECT
  24. 10 UNION ALL
  25. SELECT
  26. 11 UNION ALL
  27. SELECT
  28. 12 UNION ALL
  29. SELECT
  30. 13 UNION ALL
  31. SELECT
  32. 14 UNION ALL
  33. SELECT
  34. 15 UNION ALL
  35. SELECT
  36. 16 UNION ALL
  37. SELECT
  38. 17 UNION ALL
  39. SELECT
  40. 18 UNION ALL
  41. SELECT
  42. 19 UNION ALL
  43. SELECT
  44. 20 UNION ALL
  45. SELECT
  46. 21 UNION ALL
  47. SELECT
  48. 22 UNION ALL
  49. SELECT
  50. 23 UNION ALL
  51. SELECT
  52. 24 UNION ALL
  53. SELECT
  54. 25 UNION ALL
  55. SELECT
  56. 26 UNION ALL
  57. SELECT
  58. 27 UNION ALL
  59. SELECT
  60. 28 UNION ALL
  61. SELECT
  62. 29 UNION ALL
  63. SELECT
  64. 30 UNION ALL
  65. SELECT
  66. 31
  67. ) tab1,(
  68. SELECT
  69. CURDATE() - INTERVAL DAY (
  70. CURDATE()) - 1 DAY AS firstDay,
  71. DAY (CURDATE()) AS today
  72. ) tab2
  73. WHERE
  74. tab1.firstDay <= tab2.today

然后对所想要连接的查询数据进行连接

  1. SELECT a.date perDay,ifnull(b.num,0) dynamicIncre FROM(
  2. select date from since_month_begin ) a # 查询视图日期部分
  3. LEFT JOIN
  4. (SELECT
  5. sum(dynamic_incre) num,incre_date dates
  6. from dynamic_statistics
  7. GROUP BY incre_date) b
  8. ON a.date=b.dates
  9. ORDER BY date asc

二、查询当月所有天数的日期列表

  1. SELECT
  2. date
  3. FROM
  4. (
  5. SELECT
  6. DATE_FORMAT( DATE_SUB( last_day( curdate()), INTERVAL xc - 1 DAY ), '%Y-%m-%d' ) AS date
  7. FROM
  8. (
  9. SELECT
  10. @xi := @xi + 1 AS xc
  11. FROM
  12. ( SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 ) xc1,
  13. ( SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 ) xc2,
  14. ( SELECT @xi := 0 ) xc0
  15. ) xcxc
  16. ) x0
  17. WHERE
  18. x0.date >= (
  19. SELECT
  20. date_add( curdate(), INTERVAL - DAY ( curdate())+ 1 DAY ))
  21. ORDER BY
  22. date ASC

这部分不能当做视图,否则会报含可变参数错误

可以直接写入查询语句

  1. SELECT a.date perDay,ifnull(b.num,0) dynamicIncrement FROM(
  2. select date from (
  3. SELECT DATE_FORMAT(DATE_SUB(last_day(curdate()), INTERVAL xc-1 day), '%Y-%m-%d') as date
  4. FROM (
  5. SELECT @xi:=@xi+1 as xc from
  6. (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) xc1,
  7. (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) xc2,
  8. (SELECT @xi:=0) xc0
  9. ) xcxc) x0 where x0.date >= (select date_add(curdate(),interval-day(curdate())+1 day)) ORDER BY date asc) a
  10. LEFT JOIN
  11. (SELECT
  12. sum(dynamic_incre) num,incre_date dates
  13. from dynamic_statistics
  14. GROUP BY incre_date) b
  15. ON a.date=b.dates ORDER BY date asc

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/406527
推荐阅读
相关标签
  

闽ICP备14008679号