我需要每三个月在以下查询 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
关于mysql - 每三个月自动编辑查询 MySQL 的 WHERE 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57277910/