表格包含开始和结束日期。如何最好地使所有行活动今天?

时间:2014-11-19 23:01:04

标签: sql sql-server

我有一个事件表,每个事件都有一个开始日期和结束日期。我正在尝试编写一个查询,以便在特定日期发生所有事件。没有时间,只有约会,虽然我怀疑这会改变事情的重要性。

我确定答案很简单,我一直在看这个问题已经太久了,而且我画了一个完整的空白。我使用的是SQL Server,但如果可能的话,我希望能在任何地方使用它。

2 个答案:

答案 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
    )
)