mysql查找日期之间的记录

时间:2014-10-10 14:23:25

标签: php mysql

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'它可以正常工作,但我希望在两个日期之间获得结果。 c.start和c.end的DATA类型是DATETYPE。

有任何提示可以解决此问题吗?

2 个答案:

答案 0 :(得分:0)

我不确定你为什么要将DATE类型转换为DATE类型,所以我在这里删除了它。您可以使用BETWEEN运算符检查您提供的日期是否在startend

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

答案 1 :(得分:0)

我认为你的意思是DATETIME。因此,只需使用DATE(c。start)代替&#34; CAST(c。start AS DATE)&#34;。并且还使用&gt; = AND&lt; =以确保您将获得间隔的第一天和最后一天