Функция str_to_date не работает в сложном MySQL запросе Joomla - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть SQL-запрос, который возвращает 3 новейших образования, но он не работает после того, как я изменил тип столбца fin_date со строки на дату с определенным форматом:

   $today = JFactory::getDate()->toFormat('%d/%m/%Y');
   // echo $today==> 18/12/2018

$query =  "SELECT p.fin_date, pfr.product_name, p.ville"
             ." FROM #__virtuemart_products as p"
             ." LEFT JOIN #__virtuemart_products_fr_fr as pfr on pfr.virtuemart_product_id = p.virtuemart_product_id"
             ." WHERE p.published = 1   AND  p.product_parent_id != 0 AND str_to_date(p.fin_date,'%d/%m/%Y') >= $today "
             ." LIMIT 4 "
             ;

, даже если я изменил егодо:

$query =  "SELECT str_to_date(p.fin_date,'%d/%m/%Y'), pfr.product_name, p.ville"
             ." FROM #__virtuemart_products as p"
             ." LEFT JOIN #__virtuemart_products_fr_fr as pfr on pfr.virtuemart_product_id = p.virtuemart_product_id"
             ." WHERE p.published = 1   AND  p.product_parent_id != 0 AND str_to_date(p.fin_date,'%d/%m/%Y') >= $today "
             ." LIMIT 4 "
             ;

1 Ответ

0 голосов
/ 18 декабря 2018

Нельзя сравнивать дату (вывод str_to_date), которая будет иметь внутренний формат Y-m-d, со строкой в ​​формате d/m/Y.Вам нужно либо создать переменную $today в формате Y-m-d, используя

$today = JFactory::getDate()->toFormat('%Y-%m-%d');

, либо преобразовать ее в свой запрос, например

str_to_date(p.fin_date,'%d/%m/%Y') >= str_to_date($today,'%d/%m/%Y')
...