mysql - 每三个月自动编辑查询 MySQL 的 WHERE 条件

标签 mysql sql

我需要每三个月在以下查询 SQL 上自动编辑我的 WHERE 条件,在 MySQL 数据库 上执行:

SELECT * FROM doTable WHERE QS = 'variable';

从 1 月 1 日到 4 月 30 日,SQL 查询必须是:

SELECT * FROM doTable WHERE QS = 1;

从 5 月 1 日到 8 月 31 日的 SQL 查询必须是:

SELECT * FROM doTable WHERE QS = 2;

从 9 月 1 日到 12 月 31 日,SQL 查询必须是:

SELECT * FROM doTable WHERE QS = 3;

有人知道怎么做吗?

在此先感谢您的帮助。

编辑#1

mysql> SELECT
    QUARTER ('2019-01-01') AS `1th q`,
    QUARTER ('2019-04-30') AS `1th q`,
    QUARTER ('2019-05-01') AS `2th q`,
    QUARTER ('2019-08-31') AS `2th q`,
    QUARTER ('2019-09-01') AS `3th q`,
    QUARTER ('2019-12-31') AS `3th q`;
+-------+-------+-------+-------+-------+-------+
| 1th q | 1th q | 2th q | 2th q | 3th q | 3th q |
+-------+-------+-------+-------+-------+-------+
|     1 |     2 |     2 |     3 |     3 |     4 |
+-------+-------+-------+-------+-------+-------+
1 row in set

mysql> 

正确的输出:

+-------+-------+-------+-------+-------+-------+
| 1th q | 1th q | 2th q | 2th q | 3th q | 3th q |
+-------+-------+-------+-------+-------+-------+
|     1 |     1 |     2 |     2 |     3 |     3 |
+-------+-------+-------+-------+-------+-------+

最佳答案

你可以使用 quarter() 和 curdate()

SELECT * 
FROM doTable 
WHERE QS = quarter(curdate());

您可能正在寻找 4 个月的时间

select case when  month(curdate()) between 1 and 4  then 1
            when month(curdate()) between 5 and 8  then 2
            when   month(curdate()) between 9 and 12  then 3 end  as  four_month

http://sqlfiddle.com/#!9/9eecb/99958

关于mysql - 每三个月自动编辑查询 MySQL 的 WHERE 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57277910/

相关文章:

mysql - 字段 'id' 没有默认值?

mysql - 数据库:查询地理位置数据的最佳性能方式?

mysql - 将 INNER JOIN 和 LEFT JOIN 与日期选择结合起来

mysql - 将所有数据从一个表传输到另一个相同的数据库

python - 在通过参数传递到函数的 bigquery SQL 查询中使用用户 ID

mysql - 如何在 laravel 5.3 中将 group by 添加到 hasMany 关系中?

database - 如何根据子类型在查询中选择表?

sql - 使用 group by 和 sum 查询表

mysql - 在 MySQL 中创建涉及三个表的报告

mysql - 链接 MySQL 表中的行