C# 如何获得c语言中的最后7天#
我的数据库中包含以下数据:C# 如何获得c语言中的最后7天#,c#,C#,我的数据库中包含以下数据: Id FirstName Date 1 Heru 2019-09-10 09:00:00.000 2 Angie 2019-09-10 09:00:00.000 3 Gel 2019-09-02 09:00:00.000 我想得到它的最后7天: 这是我的密码: var dateRange = new DateTimeFromTo(); var curren
Id FirstName Date
1 Heru 2019-09-10 09:00:00.000
2 Angie 2019-09-10 09:00:00.000
3 Gel 2019-09-02 09:00:00.000
我想得到它的最后7天:
这是我的密码:
var dateRange = new DateTimeFromTo();
var currentDate = DateTime.Now;
var allSalesPro = new List<SalesProStats>();
dateRange.From = new DateTime(currentDate.Year, currentDate.Month, currentDate.Day).AddDays(-7);
dateRange.To = currentDate;
allSalesPro = AddSalesProToList(storeId, filter, dateRange);
var dateRange=new DateTimeFromTo();
var currentDate=DateTime.Now;
var allSalesPro=新列表();
dateRange.From=新的日期时间(currentDate.Year、currentDate.Month、currentDate.Day).AddDays(-7);
dateRange.To=当前日期;
allSalesPro=AddSalesProToList(存储ID、筛选器、日期范围);
我的代码运行良好
但有一些例子表明,如果我的
当前日期从8:00:00开始
将没有可检索的数据
非常感谢!:) 如果您只想要日期(而不是日期时间):
如果我理解正确的话,你会以排他性的方式过滤这段时间。比如:
Date >= fromDate AND Date < toDate
这样,您就完全绕过了时间组件,因为您使用的是完整的日期。还请注意,我使用的是DateTime.Today
而不是.Now
,以避免在DateTime
对象中获得不必要的时间
这种方法的另一种选择是重写
AddSalesProToList
,相应地重写toDate
参数。这使得该方法的使用更加容易,因为开发人员不需要考虑他们提供的内容。我不知道这是否适用于您的情况,但我仍然想指出。要获取过去7天(包括今天)的数据,请尝试以下方法
var dateRange = new DateTimeFromTo();
dateRange.From = DateTime.Today.AddDays(-7);
dateRange.To = DateTime.Today.AddDays(1).AddSeconds(-1);
allSalesPro = AddSalesProToList(storeId, filter, dateRange);
焦积云的反应是正常的,但是这个反应会持续8天(
=1-(-7)
)
还有今天加上六天前
谢谢您可以使用
var currentDate=DateTime.Now.Date.AddDays(-7)代码>以在没有时间的情况下获得正确的日期。这完全取决于你的情况,你的行动是什么?(,=)AddSalesProToList做什么?您是否打算在将来退货<如果SQL查询是简单的“介于@From和@To之间”或DateTime,则code>From
没有时间部分,To
应该返回到当前时间的所有记录。今天
。这可能也行不通,因为From
只是一个日期,而DateTime。现在比DateTime晚。今天。最有可能的是,在未来的某个日期,查询无法覆盖。我提供的替代方案确实可以,谢谢您的说明。我会相应地更新我的答案。因此,如果我当前的日期是2019-09-09 18:00:00,那么结果将是dateRange。From=2019-09-03 dateRange.To=2019-09-10 12:00:00,这非常令人困惑,因为我当前的日期是今天。。还有别的办法吗?除此之外:dateRange.To=新的日期时间(currentDate.Year、currentDate.Month、currentDate.Day、23、59、59)<代码><2019-09-10 12:00:00
意味着明天开始之前的一切。包括今天。绝对不要使用您的想法@BellmeeStore,因为它无法处理午夜前10毫秒的时间。而这个答案(
)可以解决这个问题。@BellmeeStore欢迎来到按日期和时间段过滤的噩梦。做这件事时你必须小心。首先,你必须问自己,日期的时间是否相关。如果不是(显然您不希望它们相关),则必须特别注意从过滤器的操作数中删除它们。另一件需要注意的事情是和包含筛选器(小于或等于)和独占筛选器(小于)之间的区别。
dateRange.From = DateTime.Today.AddDays(-7);
dateRange.To = DateTime.Today.AddDays(1);
var dateRange = new DateTimeFromTo();
dateRange.From = DateTime.Today.AddDays(-7);
dateRange.To = DateTime.Today.AddDays(1).AddSeconds(-1);
allSalesPro = AddSalesProToList(storeId, filter, dateRange);
dateRange.From = DateTime.Today.AddDays(-6);
dateRange.To = DateTime.Today.AddDays(1);