C# 获取上周在数据库中按日期时间添加的记录
我在我的项目中使用asp.NETMVC。我的数据库表包含一些记录。该表具有记录的datetime列。我想要上星期的记录。因此,C# 获取上周在数据库中按日期时间添加的记录,c#,entity-framework,C#,Entity Framework,我在我的项目中使用asp.NETMVC。我的数据库表包含一些记录。该表具有记录的datetime列。我想要上星期的记录。因此,LastlyRecords是: DateTime.Now = 04.04.2015 LastWeekDateTime = 28.04.2015 LastWeekDateTime < LastlyRecords < DateTime.Now DateTime.Now=2015年4月4日 LastWeekDateTime=2015年4月28日 LastWeekD
LastlyRecords
是:
DateTime.Now = 04.04.2015
LastWeekDateTime = 28.04.2015
LastWeekDateTime < LastlyRecords < DateTime.Now
DateTime.Now=2015年4月4日
LastWeekDateTime=2015年4月28日
LastWeekDateTime
有一个接受“开始日期”和“结束日期”作为参数的方法
使用开始/结束日期进行调用,如:
GetRecords(DateTime.Now.AddWeeks(-1), DateTime.Now);
为此,您可以让存储过程获取该日期范围之间的记录(或者对Entity Framework或您正在使用的任何东西执行类似操作)
您可以通过GETDATE()和DATEADD()在T-SQL中执行类似的操作,但在调用代码中执行范围计算可能更好(因为它更像是一种业务逻辑,而不是数据访问)。您必须在查询中编写逻辑,或者您可以根据日期时间范围修改以下内容
var lastweek=DateTime.Now.AddDays(7);
var记录=d(单位:db.Persons)
其中DateTime.Compare(lastweek,d.DateRecordColumn)
和DateTime.Compare(d.DateRecordColumn,DateTime.Now)
选择d代码>
结果是真的,所以是在上周。在我的表中,dateTime列具有字符串值。我用split获取dateTime的日期,并比较dateTime.Today.AddDays((int)-7).day
但是当我的dateTime是例如3
时,现在的日期是4
。4-7 = 28. 不是28,我强烈建议您将数据库表更改为使用日期类型而不是日期字符串。不这样做将是一个严重的设计缺陷,它将影响性能并使代码复杂化。var week=Person.Where(x=>Int32.Parse(x.dateTime.Split(“”).ElementAt(0))dateTime.Today.AddDays((int)-7.Day&&x.dateTime.Split(“”).ElementAt(1.ToString()==DateTime.Now.ToString(“MMMM”)和&Int32.Parse(x.DateTime.Split(“”).ElementAt(2))==DateTime.Now.Year)
LastWeekDay>DateTime.Now.Day是我上周的查询,但在2015年4月4日
MyTime04时出错了?我相信你只需要玩这个。因为您的日期是字符串格式。这实际上是您在表中以字符串形式存储日期的方式。您可以在sql端本身尝试一下,并使用我提供的相同逻辑,在比较之前将datestring字段转换为date类型,这样您就可以正确地进行比较了。转换(DATETIME,datetimeColumn,XXX)>GETDATE()
string dateTime = "01 April 2015 Wednesday 16:23";
DateTime time1 = Convert.ToDateTime(dateTime);
if (DateTime.Compare(DateTime.Now, time1) == 1 && // DateTime.Now > time1
DateTime.Compare(time1, DateTime.Today.AddDays((int)-7)) == 1 // time1 >= DateTime.Now-7days
)
{
@("True.")
}
else
{
@("False.")
}