这是我的mysql查询。我要提取的是;过去6天内插入的所有行,包括今天。这是我的查询
$user_ids = $_SESSION['user_ids']; //its array
$cs_user_ids =implode(",",$user_ids);
SELECT fb_user.name,schedule.id,schedule.location,schedule.arrival,
schedule.departure,schedule.notes,schedule.lat,
schedule.lon,schedule.who_can_c_me
FROM schedule,fb_user
WHERE EXTRACT(DAY FROM arrival)
BETWEEN EXTRACT(DAY FROM DATE_SUB(CURDATE(),INTERVAL 6 DAY))
AND EXTRACT(DAY FROM CURDATE())
AND EXTRACT(DAY FROM departure)
BETWEEN EXTRACT(DAY FROM DATE_SUB(CURDATE(),INTERVAL 6 DAY))
AND EXTRACT(DAY FROM CURDATE())
AND fb_user.fb_id = schedule.fb_id
AND fb_user.fb_id IN($cs_user_ids)
我希望OR
取代AND EXTRACT(DAY FROM departure)
来代替OR
。因为我需要到达或离开日期,但它不能与AND
()
一起使用{{1}}和我不需要那个。在我的查询中有什么问题?我想{{1}}
答案 0 :(得分:0)
这应该有效:
SELECT
fb_user.name,schedule.id,schedule.location,schedule.arrival,schedule.departure,
schedule.notes,schedule.lat,schedule.lon,schedule.who_can_c_me
FROM
schedule,fb_user
WHERE
(
(EXTRACT(DAY FROM arrival) BETWEEN EXTRACT(DAY FROM DATE_SUB(CURDATE(),INTERVAL 6 DAY)) AND EXTRACT(DAY FROM CURDATE()))
OR
(EXTRACT(DAY FROM departure) BETWEEN EXTRACT(DAY FROM DATE_SUB(CURDATE(),INTERVAL 6 DAY)) AND EXTRACT(DAY FROM CURDATE()))
)
AND
fb_user.fb_id = schedule.fb_id
AND
fb_user.fb_id IN($cs_user_ids)
答案 1 :(得分:0)
试试这个:
SELECT fb_user.name,schedule.id,schedule.location,schedule.arrival,schedule.departure,schedule.notes,schedule.lat,schedule.lon,schedule.who_can_c_me
FROM schedule,fb_user
WHERE ((DATE(arrival) BETWEEN DATE_SUB(CURDATE(),INTERVAL 6 DAY) AND CURDATE())
OR (DATE(departure) BETWEEN DATE_SUB(CURDATE(),INTERVAL 6 DAY) AND CURDATE()))
AND fb_user.fb_id = schedule.fb_id AND fb_user.fb_id IN($cs_user_ids)
我认为使用Extract DAY会导致意外的结果,比如第1天或第2天这样的比较......避免它。
答案 2 :(得分:-2)
使用括号括号
尝试这种方式"SELECT fb_user.name,schedule.id,schedule.location,schedule.arrival,schedule.departure,schedule.notes,schedule.lat,schedule.lon,schedule.who_can_c_me
FROM schedule,fb_user
WHERE EXTRACT(DAY FROM arrival)
(BETWEEN EXTRACT(DAY FROM DATE_SUB(CURDATE(),INTERVAL 6 DAY)) AND EXTRACT(DAY FROM CURDATE()))
OR
EXTRACT(DAY FROM departure)
(BETWEEN EXTRACT(DAY FROM DATE_SUB(CURDATE(),INTERVAL 6 DAY)) AND EXTRACT(DAY FROM CURDATE()))
AND fb_user.fb_id = schedule.fb_id
AND fb_user.fb_id IN($cs_user_ids)"