![](/img/trans.png)
[英]How To write an SQL query to return all “historical records” for TODAY'S DATE (month and day) for EVERY YEAR in the DB?
[英]Getting records for today including all day events which span today
我有一個約會列表,帶有開始日期,結束日期和全天標記。
我希望能夠輸出當天的所有記錄。
記錄示例:
ID Start, End, AllDay
1 27/11/2016 00:00 30/11/2016 00:00 true
2 30/11/2016 00:00 01/12/2016 00:00 true
3 30/11/2016 00:00 03/12/2016 00:00 true
4 30/11/2016 00:00 05/12/2016 00:00 true
5 01/12/2016 10:00 01/12/2016 15:00 false
6 02/12/2016 09:00 02/12/2016 11:00 false
給定此示例數據,並假設日期為01/12/2016,如何獲取查詢以輸出以下內容:
ID Start, End, AllDay
2 30/11/2016 00:00 01/12/2016 00:00 true
3 30/11/2016 00:00 03/12/2016 00:00 true
4 30/11/2016 00:00 05/12/2016 00:00 true
5 01/12/2016 10:00 01/12/2016 15:00 false
我有兩個查詢都返回僅部分正確的輸出:
start = DateTime.Parse(DateTime.Today.ToString("dd/MM/yyyy 00:00"));
end = DateTime.Parse(DateTime.Today.AddDays(1).ToString("dd/MM/yyyy 00:00"));
var schedule = entity.Schedule.Where(x => x.Start >= start && x.End <= end && !x.AllDay)
.OrderBy(x => x.Start)
.ToList();
var alldays = entity.Schedule.Where(x => x.Start <= start && x.End => start && x.AllDay)
.OrderBy(x => x.Start)
.ToList()
var events= entity.Schedule.Where((
x => x.Start <= start && x.End => start) || x.AllDay)
.OrderBy(x => x.Start)
.ToList();
以上為您工作
我認為您想確保它在時間表的“日期”部分內。
var events = entity.Schedule
.Where(x => x.Start.Date <= start.Date && start.Date <= x.End.Date)
.OrderBy(x => x.Start)
.ThenBy(x => x.End)
.ToList()
如果我理解正確,那么您有一個范圍列表,如果它們達到另一個范圍,則要過濾它們。 由於您比較兩個范圍,因此可能發生幾種可能性:
兩個范圍彼此不接觸
|---candidate---| |---filter---|
候選詞的結尾與過濾器的開頭匹配
|---candidate---| |---filter---|
候選詞的結尾位於過濾器內
|---candidate---| |---filter---|
候選人封裝過濾器
|---candidate---| |---filter---|
候選人與過濾器完全匹配
|---candidate---| |----filter-----|
候選者屬於過濾器
|---candidate---| |------filter-------|
候選者的開頭位於過濾器內
|---candidate---| |---filter---|
候選詞的開頭與過濾器的結尾匹配
|---candidate---| |---filter---|
請指定您希望看到哪些可能性,哪些不想。 有些情況下回答起來很瑣碎(例如1、5和6),但其他所有情況實際上取決於特定的用例。 因此,請告訴我們應該匹配哪種情況,我們可以創建所需的where子句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.