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

标签 mysql sql microstrategy

我正在尝试实现以下布局。如果我选择 6 月的 curdate(),我应该得到之前的 6 个月。6 个月也应该包括 6 月。即如果 curdate = 2018 年 6 月 25 日,我的出局时间应该是从 2018 年 6 月到 2018 年 1 月的几个月。谁能帮我解决语法问题。我现在所拥有的只是单独的查询,这些查询将提供我之前 6 个月的 MYSQL 信息。

月份 前几个月 六月五月 四月 三月 二月 一月 五月四月 三月 二月 一月 十月

最佳答案

使用 Date_Add 函数。请参阅下面的示例:

/* 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');

关于mysql - 尝试在 MYSQL 中为当前月份创建 6 个月滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51032951/

相关文章:

linux - 微策略触发批处理

javascript - 直接从microstrategy获取导出的PDF文档

php - 检查MySQL行是否存在

php mysql INSERT INTO mysql 通过使用注册表单

mysql - 为什么 TIMESTAMP 列需要 "NULL"才能接受空值?

mysql - 获取除 SQL 结果集之外的所有行

php - mysql_num_rows 期望参数 1 是资源

PHP ODBC 不接受带空格的列名的别名

sql - 对于查询的 where 子句部分,如何将 IN 运算符替换为 EXISTS 运算符?