Выполнение SQL-запроса в другом формате даты

У меня есть база данных, которая раньше была базой данных Access. Теперь я перешел на MySQL. Существует таблица «Рассрочка» с большим количеством записей, а дата имеет формат «ГГГГ-мм-дд».

Теперь я сохраняю новые даты в формате «дд-мм-ГГГГ», просто используя дату («д-м-Г») в PHP.

Теперь я хочу выполнить этот запрос

SELECT * FROM `installments` WHERE YEAR(date) = YEAR(CURRENT_DATE) AND MONTH(date) = MONTH(CURRENT_DATE)

Но это работает только в более старом формате, например, 2016-07-12. Работает 07.12.2016. Что мне теперь делать?

Любая помощь будет оценена по достоинству.

Я знаю, что могу изменить формат, используя date('Y-m-d'), но я не хочу этого делать.


person Sam57    schedule 14.07.2016    source источник
comment
вы сохраняете дату в правильном поле даты или в текстовом поле? Если вы сохраните его как дату, формат не должен иметь значения   -  person ADyson    schedule 14.07.2016
comment
Я храню его в текстовом поле   -  person Sam57    schedule 14.07.2016
comment
Я вижу, вы получили ответ, который работает, но если бы вы делали это снова, я бы использовал правильное поле даты в MySQL. Таким образом, вам не нужно хранить и извлекать его в каком-либо конкретном формате. Вы просто сохраняете его как объект даты и беспокоитесь только о том, в каком формате он находится в тот момент, когда вы хотите отобразить его пользователю.   -  person ADyson    schedule 15.07.2016


Ответы (2)


Попробуй это

SELECT * FROM `installments` WHERE YEAR(STR_TO_DATE(DATE,'%d-%m-%Y')) = YEAR(CURRENT_DATE) AND MONTH(STR_TO_DATE(DATE,'%d-%m-%Y')) = MONTH(CURRENT_DATE)
person PravinS    schedule 14.07.2016
comment
Работал как шарм. Спасибо - person Sam57; 14.07.2016

Я думаю, вам нужно что-то вроде этого:

SELECT * FROM `installments` WHERE YEAR(TO_DATE(date, 'DD/MM/YYYY')) = YEAR(CURRENT_DATE) AND MONTH(TO_DATE(date, 'DD/MM/YYYY')) = MONTH(CURRENT_DATE);

Надеюсь это поможет.

person Thomas Naessens    schedule 14.07.2016