我有一张表events
使用此表我必须获取mysql中两个日期和两列之间的记录,请参阅下面我提到的表格格式
eventId startDate dueDate
1 2018-01-15 2018-01-17
2 2018-01-25 2018-01-25
3 2018-01-11 2018-01-16
假设我想将2018-01-14
的记录转换为2018-01-16
表示实际结果应如下所示
我的预期答案
eventId
1
3
我试过这样但没有任何事情发生
SELECT eventId FROM events WHERE startDate <= '2018-01-30' AND DueDate <= '2018-01-30'
我正在获得输出
eventId
3
答案 0 :(得分:1)
您可以在您需要的范围之间使用,例如:
SELECT eventId
FROM events
WHERE startDate BETWEEN '2018-01-14' AND '2018-01-16'
AND DueDate BETWEEN '2018-01-14' AND '2018-01-16'
或者您也可以为两列使用不同的范围
获取id = 3的行,您需要2018-01-11而不是2018-01-14的起始范围
SELECT eventId
FROM events
WHERE startDate BETWEEN '2018-01-11' AND '2018-01-16'
AND DueDate BETWEEN '2018-01-11' AND '2018-01-16'
或者您可以使用OR条件来检查14到16之间的两列中的一列
SELECT eventId
FROM events
WHERE startDate BETWEEN '2018-01-14' AND '2018-01-16'
OR DueDate BETWEEN '2018-01-14' AND '2018-01-16'
答案 1 :(得分:0)
你的意思是你想要在给定的日期范围内“活跃”的所有事件,例如在2018-01-14和2018-01-16之间?
有助于精确制定自然语言中的“我的标准”。我重新制定了我认为你的意思:
给我所有的活动
看起来有点奇怪 - 你必须将event.startDate与range.endDate进行比较(反之亦然)。但这是你需要的正确检查。 现在很容易将其转换为SQL:
SELECT eventId
FROM events
WHERE startDate <= '2018-01-16'
AND dueDate <= '2018-01-14'