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.endAS DATE ) > '2014-13-02',它可以工作,但我希望得到两个日期之间的结果。c.start和c.end的数据类型为DATETYPE。
有什么建议可以解决这个问题吗?
发布于 2014-10-10 22:30:10
我不确定为什么要将DATE类型转换为DATE类型,所以我在这里删除了它。您可以使用BETWEEN运算符检查您提供的日期是否在start和end之间
WHERE
sh.speaker_id = 888 AND
xcb.brand_id = 27
'2014-13-02' BETWEEN `c`.`start` AND `c`.`end`发布于 2014-10-10 22:39:30
我假设你指的是DATETIME。所以只需使用DATE (c.Date)而不是"CAST( c.start AS start )“。还可以使用>=和<=来确保您将获得间隔的第一天和最后一天
https://stackoverflow.com/questions/26301684
复制相似问题