【发布时间】:2011-11-28 16:33:04
【问题描述】:
表:
- 活动:id、姓名、日期、时间、endDate、endTime
基本上我得到一个查询:
TODAY:
SELECT * FROM activities WHERE DATE(A.date) = DATE(CURDATE())
TOMORROW:
SELECT * FROM activities WHERE DATE(A.date) = (CURDATE() + INTERVAL 1 DAY)
NEXT WEEK:
SELECT * FROM activities WHERE UNIX_TIMESTAMP(A.DATE) BETWEEN '" . strtotime('previous saturday') . "' AND '" . (strtotime('previous monday') - 1) . "'
问题是,我不知道如何解决,当插入结束日期时,它应该在日期和结束日期之间进行搜索。所以如果一个活动昨天开始,今天结束,我们选择“今天”查询,我们仍然想要这个活动。
【问题讨论】:
-
列类型列
date是什么?如果是日期,为什么需要使用 DATE 进行 1 和 2 查询? -
您需要指定表的哪些字段是
NULL-able(我想endDate是),以及您希望查询拉出的确切内容(例如,活动开始或结束于给定日期,或在给定日期开放的活动,因此“今天”介于date和endDate之间) -
所以你想检索所有与感兴趣的时期重叠的活动?