尝试在mysql中为当前月份创建6个月滚动

irlmq6kh  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(351)

我正在努力实现以下布局。如果我选择curdate(),这是六月,我应该得到前6个月。6个月也应该包括六月。如果curdate=2018年6月25日,则我的外出时间应为从2018年6月到2018年1月的几个月。谁能帮我学语法吗。我现在所有的是个人查询,这将给我在mysql的前6个月。
上月6月5月4月3月2月1月5月4月3月2月12日

j8ag8udp

j8ag8udp1#

使用日期添加功能。参见以下示例:

/* Query to select last 6 months (to the day) */
SELECT
    *
FROM 
    test_dates
WHERE 
    `date` > date_add(curdate(), INTERVAL -6 MONTH)

/* Query to get every date from 01/01/2018 to 06/25/2018 */
SELECT
    `date`
FROM
    test_dates
WHERE
    STR_TO_DATE(CONCAT(YEAR(`date`), '-', MONTH(`date`), '-01'), '%Y-%m-%d') 
    >= 
    STR_TO_DATE(
                CONCAT(
                        YEAR(DATE_ADD(curDate(), INTERVAL -5 MONTH)),
                        '-',
                        MONTH(DATE_ADD(curDate(), INTERVAL -5 MONTH))
                        , '-01'
                        )
                , '%Y-%m-%d'
                );

我用来设置测试的代码:

/* Create a table to test */
DROP TABLE IF EXISTS test_dates;
CREATE TABLE IF NOT EXISTS test_dates (
    `date` datetime
);

/* Insert Test Dates */
INSERT INTO test_dates (`date`) VALUES ('2018-06-01');
INSERT INTO test_dates (`date`) VALUES ('2018-05-01');
INSERT INTO test_dates (`date`) VALUES ('2018-04-01');
INSERT INTO test_dates (`date`) VALUES ('2018-03-01');
INSERT INTO test_dates (`date`) VALUES ('2018-02-01');
INSERT INTO test_dates (`date`) VALUES ('2018-01-01');
INSERT INTO test_dates (`date`) VALUES ('2017-012-01');
INSERT INTO test_dates (`date`) VALUES ('2017-011-01');

相关问题