我有一个事件表,每个事件都有一个开始日期和结束日期。我正在尝试编写一个查询,以便在特定日期发生所有事件。没有时间,只有约会,虽然我怀疑这会改变事情的重要性。
我确定答案很简单,我一直在看这个问题已经太久了,而且我画了一个完整的空白。我使用的是SQL Server,但如果可能的话,我希望能在任何地方使用它。
答案 0 :(得分:0)
您可以在where
子句中使用日期逻辑:
select e.*
from events e
where start_date >= cast(getdate() as date) and
end_date <= cast(getdate() as date)
您可以将常量值替换为表达式cast(getdate() as date)
。
答案 1 :(得分:0)
假设您可以拥有正在进行的事件,您可以使用:
DECLARE @SomeDay DATE
SET @SomeDay = CAST('01 JAN 2014' AS DATE)
SELECT *
FROM SomeTable
WHERE
(
CAST(start_date AS DATE) <= CAST(@SomeDay AS DATE) AND
(
CAST(end_date AS DATE) >= CAST(@SomeDay AS DATE) OR
end_date IS NULL
)
)