2013-09-05 2 views
0

в моей таблице mysql, есть столбец startYear, startMonth, endYear, endMonth, которые являются целыми (int). там я сохранил начальный год и месяц, и заканчиваю год и месяц на что-то .. например, я хочу сохранить продолжительность моего автомобильного взноса, поэтому startYear будет иметь 2012 год, startMonth будет иметь 8, endYear будет 2019, endMonth будет иметь 7лучший способ проверить продолжительность в mysql

ОК, так как текущий фактический месяц - 9 (сентябрь) и 2013 год, что для меня наилучший способ/запрос, чтобы проверить, находится ли текущий месяц и год в начале года, startMonth и endYear, endMonth?

+3

Вы можете думать об использовании столбца с типом данных DATE – Ibu

ответ

0

BETWEEN проверяет, больше ли или меньше первого номера и меньше или равно второму числу.

IF (MONTH(CURDATE()) BETWEEN startMonth and endMonth) AND (YEAR(CURDATE()) BETWEEN startYear and endYear)) 
+2

Это не является правильным. Что, если старт - октябрь 2011 года и конец - февраль 2013 года. Январь 2012 года должен быть между ними, но приведенная выше формула скажет, что это не так. – Barmar

+0

Хм. Очень хорошая точка. – aynber

+0

yup это не правильно, но это привело меня в правильное направление :) – imin

0

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

CURDATE() BETWEEN CONCAT_WS('-', startYear, startMonth, '01') 
        AND CONCAT_WS('-', endYear, endMonth, '31'); 
Смежные вопросы