SQL Query或Linq查询每天从数据库中获取No of Events

时间:2017-11-30 07:15:15

标签: sql linq

用于获取每个记录(Id),事件木星,地球和火星每天的事件数量的SQL查询或linq查询在第7个日期之后,因此事件数量为3(考虑时间)。

1. A event can start and end in the same day.
2. A event can start today and end after 3 days.

 Table Name:  **Events**

    **Id**  **Name**  **StartDateWithTime**        **EndDateWithTime**

    1        Sun       2017-11-28 00:00:00.000     2017-11-29 0:00:00.000
    2        Moon      2017-11-28 00:00:00.000     2017-12-01 10:00:00.000
    3        Earth     2017-11-07 00:00:00.000     2017-11-30 00:40:00.000
    4        Jupiter   2017-11-07 00:00:00.000     2017-11-07 20:00:00.000
    5        Mars      2017-11-07 10:00:00.000     2017-12-07 20:10:00.000

SQL查询或linq查询以获取每天的事件数

4 个答案:

答案 0 :(得分:0)

你必须执行简单的日期愤怒

select Id,Name from Events where
 GETDATE () >= EndDateWithTime and GETDATE ()   <= StartDateWithTime

答案 1 :(得分:0)

您基本上必须每天发生COUNT次事件,这意味着GROUPing BY日期本身。你可以试试这个:

 SELECT         COUNT(*) AS NumberOfEvents,
                CONVERT(DATE, event.StartDateWithTime) as StartDateWithTime
 FROM           Events event
 GROUP BY       CONVERT(DATE,event.StartDateWithTime)
 ORDER BY       CONVERT(DATE,event.StartDateWithTime)

你可以在这里看到 - &gt; http://rextester.com/ZFHJ5703

希望这有帮助!!!

答案 2 :(得分:0)

在Oracle SQL中,我使用table1作为我的测试表。 column3是开始日期,column4是结束日期。

SELECT         TRUNC(t.column3) 
             , COUNT(*) AS total_events              
 FROM          table1 t
 WHERE  t.column3<=t.column3 AND t.column4>=t.column3
 GROUP BY      TRUNC(t.column3)
 ORDER BY       TRUNC(t.column3)

答案 3 :(得分:-1)

您可以同时使用两者。如果您使用Linq,则需要更多代码才能编写。如果使用sql,数据库服务器将需要更多工作。 它实际上取决于您的架构。 我更喜欢sql

最好的问候