Так как меняются только ваши разделители (не порядок числовых значений), вы можете очень эффективно использовать LIKE
с подчеркиванием, чтобы отметить, где любой символ будет соответствовать.
По сути, вы подготавливаете переменную php в соответствии с запросом. ( Демо )
$rentaldate = '29.06.1991';
$query->where("orderdateis LIKE " . $db->q(str_replace('.', '_', $rentaldate));
Или вы можете оставить свою переменную без изменений и использовать более дорогой вызов REGEXP
, чтобы использовать «магию» .
, которая представляет «любой символ»: ( Demo )
$rentaldate = '29.06.1991';
$query->where("orderdateis REGEXP " . $db->q($rentaldate))
Я рекомендую первое. Я также должен заявить, что это можно сделать с помощью более альтернативных методов, но, как я уже упоминал в своем предыдущем вопросе, вы всегда должны хранить значения даты в столбцах типа даты для простоты обработки.
STR_TO_DATE()
- полезная функция, но она плохо подходит для вашей задачи, поскольку требует указания формата входящей даты, чтобы он мог правильно прочитать строку. К сожалению, ваши строки даты различаются по формату.