Мой совет - фактически изменить таблицу, чтобы использовать реальные даты, если это возможно. Если они неполные даты, вы можете заставить их быть в начале периода, например yyyy-mm-01
.
Затем вы можете легко использовать between
в своих запросах вместе со всеми видами чудесных функций манипулирования датами.
Однако, если это не вариант, а ваши данные правильно в том смысле, что существует только достоверные данные в таблице, вы можете просто использовать что-то вроде:
select * from mytable
where (year = 2014 and month >= 12)
or (year = 2015 and month <= 2)
Это может быть обобщена в запрос на сегодняшний день между M1/Y1 и M2/Y2 включительно, с чем-то вроде:
select * from mytable
where (year = Y1 and month >= M1)
or (year > Y1 and year < Y2)
or (year = Y2 and month <= M2)
Postgres позволит 'где (год, месяц) между (2014,12) и (2015,2),' возможно MySQL делает, Что ж. –