Даты, меньшие или равные 6 месяцам, но не включающие даты> сегодня - 2 дня

Используя MySQl, у меня есть таблица со столбцом datetime типа данных, и мне нужно выбрать строки с datetime <6 месяцев текущей даты, но также исключить первые 2 дня.

ПРИМЕР:

На сегодня 27.01.2017 -

Мне нужны записи с 27.01.2017 по 27.07.2016 (это ИНТЕРВАЛ из 6 МЕСЯЦЕВ), минус первые 2 дня (26.01.2017 и 27.01.2017).

Так что мои результаты будут в списке дат с 25.01.2017 по 27.07.2016.

Что у меня так далеко

SELECT * FROM myTable WHERE myDateTime >= DATE_SUB(CURRENT_DATE(), INTERVAL 6 MONTH) AND (DATE(date_add(myDateTime, INTERVAL 2 DAY))) < DATE(CURRENT_DATE())

Должно ли это работать? Есть ли лучший способ сделать это?

1 ответ

Решение

Как насчет:

SELECT * FROM myTable WHERE DATE(myDateTime) >= DATE(NOW() - interval 6 month + interval 2 day))

Изменить: Только что увидел, что вам нужно, чтобы оно было историческим, поэтому настройте на:

SELECT * FROM myTable WHERE DATE(myDateTime) BETWEEN DATE(NOW() - interval 6 month + interval 2 day) AND DATE(NOW())

Другие вопросы по тегам