Выберите запись по месяцу между 12 и 2 нового года

0

У меня есть эта запись:

[id | dateofit ]
[ 1 | 2017-12-1]

Который я хочу выбрать с помощью этого запроса:

SELECT id FROM records WHERE MONTH(dateofit) BETWEEN 12 AND 2

Проблема в том, что 12 из 2017 и 2 с 2018, поэтому я не получаю никаких результатов,

Я попытался заменить запрос как этот MONTH(dateofit) BETWEEN MONTH(12) AND MONTH(1) Но все та же проблема

То, что я хочу сделать, это выбрать записи в месяц [12, 1 (newyear), 2 (newyear)]

  • 1
    почему бы просто не использовать dateofit >= '2017-12-01' and dataofit < '2018-03-01'
  • 0
    @VamsiPrabhala Вы можете опубликовать это как ответ. Это также было бы саркастично.
Показать ещё 6 комментариев
Теги:

3 ответа

2
Лучший ответ

Почему бы не предоставить только временной диапазон?

SELECT id FROM records WHERE dateofit BETWEEN "2017-12-01 00:00:00" AND "2018-03-01 23:59:59";
  • 0
    Что в случае, если я хочу выбрать все записи, имеющие месяц между 12 и 2 не заботясь о году?
  • 0
    Затем вы используете month(date of it) in (12,1,2)
1

Вот два возможных подхода: если у вас есть только данные с марта 2017 года по ноябрь 2018 года:

SELECT
    id
FROM
    records
WHERE
    MONTH(dateofit) IN (12, 1, 2)

Если у вас есть многолетние данные:

SELECT
    id
FROM
    records
WHERE
    dateofit BETWEEN '2017-12-01' AND '2018-02-28'
0

Попробуй это:

SELECT id FROM records 
WHERE ( YEAR(dateofit) = 2017 AND MONTH(dateofit) = 12) OR 
      ( YEAR(dateofit) = 2018 AND MONTH(dateofit) IN (1, 2));

Ещё вопросы

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