MYSQL中用字符串2022-07去匹配Date类型大于2022-07-01并小于2022-07-31

正文

需求上,是有个日期字符串,例如2022-07,代表着年月。数据库中表对于这个字段存的是年月日,例如:2022-07-15。
我希望的是:获取到2022-07-01到2022-07-31,之间的数据,条件是:2022-07

SQL

SELECT COUNT(id)
        FROM ${promotion}.pm_sales_report_summary
        WHERE `status` = 0
          AND `report_month` >= DATE_FORMAT(CONCAT(#{month}, '-01'), '%Y-%m-%d')
          AND `report_month` <=
              DATE_FORMAT(DATE_SUB(DATE_ADD(CONCAT(#{month}, '-01'), INTERVAL 1 MONTH), INTERVAL 1 DAY), '%Y-%m-%d')

解释

这是一个用于统计符合条件的记录数量的SQL查询语句。

该查询从名为pm_sales_report_summary的表中选择满足以下条件的记录:

status 列的值为0
report_month 列的值在给定的日期范围内
给定的日期范围是由两个日期组成的,分别是:

DATE_FORMAT(CONCAT(‘2023-07’, ‘-01’), ‘%Y-%m-%d’):将’2023-07-01’格式化为’%Y-%m-%d’形式的日期。
DATE_FORMAT(DATE_SUB(DATE_ADD(CONCAT(‘2023-07’, ‘-01’), INTERVAL 1 MONTH), INTERVAL 1 DAY), ‘%Y-%m-%d’):将’2023-07-01’加上一个月并减去一天,然后格式化为’%Y-%m-%d’形式的日期。
查询使用了COUNT函数来计算满足条件的记录数量,并返回该数量作为结果。

请注意,查询中的具体表名和列名可能会因您的数据库结构而有所不同。确保表名和列名正确,并且该查询能够在您的数据库环境中执行。

你可能感兴趣的:(mysql,oracle,数据库)