момент, когда вы указать месяц, MYSQL двигатель достаточно умен, чтобы получить правильное количество дней в течение месяца (будь то високосный год или нет) и соответственно оценивайте свои поля даты.
Для получения данных между двумя датами вашего выбора: (с использованием interval -1 year
, чтобы получить один год назад с сегодняшнего дня)
SELECT * FROM yourtable
WHERE yourdate BETWEEN DATE_ADD(Now(), Interval -1 YEAR)
AND Now()
AND MONTH(yourdate) = 2 -- to get data for Month of February
;
Или вы можете просто просто написать с функцией YEAR без BETWEEN
SELECT * FROM yourtable
WHERE YEAR(yourdate) = YEAR(Now()) - 1
AND MONTH(yourdate) = 2 -- to get data for Month of February
;
Для вопроса о Str_to_Date
функция используется для преобразования строки, содержащей дату в тип даты с желаемым форматом, и это инверсия функции DATE_FORMAT
.
SELECT STR_TO_DATE('12-Apr-2012', '%d-%M-%Y')
FROM DUAL
;
Обратите внимание, в приведенном выше демо, что вы должны указать день, месяц, год договоренность в формате, который вы добавляете в функции STR_TO_DATE
.
PS: это довольно расплывчато, что вы действительно tryhing достичь здесь, без sameple данных и ожидаемым reslts показано на вопрос .. :)
, пожалуйста, сообщите нам некоторые данные и желаемый результат. –