2013-07-16 3 views
0

Прежде всего, я вообще не гуру mySQL, поэтому, пожалуйста, простите меня, если мой вопрос слишком глуп.Mysql function TO_DAYS неверные параметры

Я пытаюсь получить разницу между двумя датами, но первый нужно захватить с помощью подзапроса. Здесь

AND TO_DAYS((SELECT DATE(date_add) FROM ps_order_history oh2 WHERE oh2.id_order_state = 4  
AND id_order = o.id_order limit 1) as shdate) < (TO_DAYS(NOW()) - 12) 

Интересно, что я делаю неправильно здесь, так как я получаю следующее сообщение об ошибке:

Incorrect parameters in the call to native function 'TO_DAYS' 

Любой человек может помочь, возможно? Мне действительно нужно использовать те условия, при получении других значений

Заранее спасибо

ответ

0

Я думаю, что вопрос является «as shdate», которые должны быть удалены.

AND TO_DAYS((SELECT DATE(date_add) 
        FROM ps_order_history oh2 
        WHERE oh2.id_order_state = 4 
        AND id_order = o.id_order 
        LIMIT 1 
       ) as shdate 
-- not valid here ^^^^^^^^^ 
      ) < (TO_DAYS(NOW()) - 12) 

Если вы хотите включить псевдоним, это должно быть после выражения в списке SELECT перед ключевым словом FROM. Это не требуется, но приемлемо вот так:

AND TO_DAYS((SELECT DATE(date_add) AS shdate 
-- alias is valid here     ^^^^^^^^^ 
        FROM ps_order_history oh2 
        WHERE oh2.id_order_state = 4 
        AND id_order = o.id_order 
        LIMIT 1 
       ) 
      ) < (TO_DAYS(NOW()) - 12) 
+0

Я такой тупой! Я пробовал это, но без внешних скобок, и он сломался. Он работает сейчас, огромное спасибо! – user2588996

Смежные вопросы