2014-10-10 6 views
0
SELECT 
    amount, 
    rh.honoraria_key, 
    rh.honoraria_name 
FROM 
    xref_speaker_honoraria sh 
    INNER JOIN xref_contract_speaker xcs ON (
     sh.contract_id = xcs.contract_id) 
    INNER JOIN xref_contract_bureau xcb ON (
     xcs.contract_id = xcb.contract_id) 
    INNER JOIN ref_contract c ON (xcs.contract_id = c.contract_id) 
    INNER JOIN ref_honoraria rh ON (
     sh.honoraria_id = rh.honoraria_id AND 
     rh.display_ext>0) 
WHERE 
    sh.speaker_id = 888 AND 
    xcb.brand_id = 27 
    AND CAST(c.`start` AS DATE) < '2014-13-02' 
    AND CAST(c.`end` AS DATE) > '2014-13-02' 
GROUP BY 
    rh.honoraria_key 
ORDER BY 
    rh.display_ext 

У меня есть вышеупомянутый запрос, это не возвращает результат из-за проблемы с датой. Если я удалю AND CAST(c. конец AS DATE) > '2014-13-02', он работает, но я хочу получить результат между двумя датами. Тип DATA c.start и c.end - DATETYPE.mysql найти запись между датами

Любой намек на это?

+0

Можете ли вы поделиться определенной датой выборки и результатом, который вы пытаетесь достичь? Не уверен, что я следую ... – Mureinik

+0

Если 'start' и' end' уже являются типами Date, то почему CAST как DATE? – JNevill

+0

, потому что я сравниваю дату с датой, но не работает без даты CAST. – kayra

ответ

0

Я не уверен, почему вы выбрали тип DATE для типа DATE, поэтому я удалил его здесь. Вы можете использовать BETWEEN оператор, чтобы проверить, что дата вы поставляемая между start и end

WHERE 
    sh.speaker_id = 888 AND 
    xcb.brand_id = 27 
    '2014-13-02' BETWEEN `c`.`start` AND `c`.`end` 
0

я предполагаю, что вы имеете в виду DATETIME. Поэтому просто используйте DATE (c. start) вместо «CAST (c. start AS DATE)». А также используйте> = И < = чтобы быть уверенным, что вы получите первый и последний день интервала

+0

Я пробовал с DATE() и BETWEEN, но все же не уронил результаты – kayra

+0

Вы уверены, что у вас есть записи в базе данных, которые относятся к этому условию? –