Попытка создать 6 месяцев пролонгации текущего месяца в MYSQL

0

Я пытаюсь достичь следующего макета. Если я выберу curdate(), который будет june, я должен получить предыдущие 6 месяцев. 6 месяцев должны включать июнь также.ie, если curdate = 25-2018 июня мой выход должен быть месяцами с июня по 2018 год до января 2018 года. Может кто-нибудь, пожалуйста, помогите мне с синтаксисом. Все, что у меня сейчас есть, - это индивидуальные запросы, которые дадут мне предыдущие 6 месяцев в MYSQL.

Месяц Предыдущие месяцы june may apr mar feb jan may apr mar feb jan DEc

  • 0
    Это желаемый результат. Текущий месяц Предыдущий месяц июнь май, апрель, март, февраль, январь май апр, мар, февраль, янв, декабрь
Теги:
microstrategy

1 ответ

0

Используйте функцию 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');

Ещё вопросы

Сообщество Overcoder
Наверх
Меню